JSON - текстовое представление данных.
К примеру, вам необходимо передать объект (экземпляр класса) по сети или записать в файл класс, а потом его прочитать из этой же или другой программы. В таком случае вам необходимо воспользоваться сериализацией (см https://ru.wikipedia.org/wiki/Сериализация). В большинстве высокоуровневых языках программирования есть собственные средства сериализации, зачастую сериализация происходит в нечитаемый человеком набор байтов.
Ниже пойдет речь о текстовой сериализации, json и xml. Хочется заметить, что если мы говорим о классической сериализации объектов, то сериализуются только данные (поля класса), тогда как информация о методах не содержиться в сериализованных данных. Такое представление называется DTO (см. https://ru.wikipedia.org/wiki/DTO)