Описание тега jsonobject
Объект JSON - это текстовое представление объекта в формате JSON, как определено в разделе 4 RFC 7159; это неупорядоченный набор пар имя / значение (называемый "членами объекта"), где имена представляют собой строки JSON, а значения могут быть любым значением JSON.
Пример (подробнее ниже): {"answer":42}
После анализа текста JSON тип результирующей структуры будет широко варьироваться в зависимости от используемой среды. Некоторые языки, такие как JavaScript, Python и Ruby, имеют встроенную поддержку (вложенных) "словарей", поэтому в результате получается собственная структура. Другие языки, такие как C, C++ и Java, не имеют таких встроенных типов и представляют анализируемый результат с помощью выделенных классов.
Примечания:
- Имя члена может быть пустой строкой; это действительный JSON:
{ "": null }
. - Разрешены повторяющиеся имена членов, но поведение парсера JSON в этом случае не определено; например, в
{ "key": "v1", "key": "v2" }
, нет гарантии, что парсер JSON выдаст в качестве значения для"key"
. - JSON - это текстовая нотация для обмена данными. Если вы пишете исходный код и не имеете дело со строкой, вы больше не имеете дело с JSON, вы имеете дело с результатом синтаксического анализа JSON. Это может сбивать с толку языки, которые не могут сопоставить объект JSON со встроенной структурой, например Java, поскольку имена задействованных классов могут сбивать с толку (
JSONObject
в случае многих JSON-библиотек для Java). Несмотря на название, это больше не JSON; это просто результат разбора JSON. - Инициализаторы объектов JavaScript - это не то же самое, что объекты JSON, например, это не JSON:
var obj = {"foo":"bar"};
Инициализаторы объектов JavaScript имеют немного другую семантику, чем JSON (например, имена членов не должны быть в кавычках, значения, которые не существуют в JSON, напримерundefined
могут быть включены, повторяющиеся имена элементов имеют определенный результат как в свободном, так и в строгом режиме, имена элементов могут быть результатом вычислений [в ES2015 и более поздних версиях] и т. д.).
Примеры:
Объект с одним членом, называемый answer
, значение которого 42:
{"answer":42}
Идентичный объект с пробелом, который игнорируется в JSON:
{
"answer" : 42
}
Объект с двумя членами:
{"answer":42,"question":"Life, the Universe, and Everything"}
Объект с другим объектом в качестве значения одного из его членов:
{
"title": "The Hitchhiker's Guide to the Galaxy",
"author": {
"name": "Douglas Adams",
"website": "http://douglasadams.com/",
"wikipedia": "https://en.wikipedia.org/wiki/Douglas_Adams"
}
}