Для всех практических целей «JSON» имеет ровно одно значение, которое представляет собой строку , представляющую объект JavaScript, соответствующий определенному синтаксису.
JSON анализируется на объект JavaScript с использованием JSON.parse
, а объект JavaScript преобразуется в строку JSON, используя JSON.stringify
.
Проблема в том, что слишком многие люди попали в плохую привычку ссылаться на простые старые объекты JavaScript как на JSON. Это либо запутанно, либо небрежно, либо и то, и другое. {a: 1}
- объект JS. '{"a": 1}'
- строка JSON.
В том же ключе многие люди используют имена переменных, например json
, для ссылки на объекты JavaScript, полученные из JSON. Например:
$.getJSON('foo.php') . then(function(json) { ...
В приведенном выше случае, имя переменной json
опрометчиво. Фактическая полезная нагрузка, возвращаемая с сервера, представляет собой строку JSON, но внутренне $.getJSON
уже превратила это в простой старый объект JavaScript, который передается обработчику then
. Поэтому было бы предпочтительно использовать имя переменной data
, например.
Если библиотека использует термин «json» для обозначения вещей, которые не являются JSON, но на самом деле являются объектами JavaScript, это знак плохого дизайна, и я предлагаю оглянуться на другую библиотеку.
Благодарим за разъяснение этого. Android использует JsonObject и известную в JOS библиотеку json использует JSON как тип (который действует как словарь, на который вы можете извлекать данные с помощью чего-то вроде jsonObject.get ("name ")' .. – eugene