Difference between revisions of "JSON/ru"
Prospero78su (talk | contribs) |
|||
(10 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
{{JSON}} | {{JSON}} | ||
− | == | + | == Обзор == |
[http://www.json.org JSON](JavaScript Object Notation) является формой представления данных, которая обеспечивает стандартизированный формат обмена данными, используя простой текст. Как следует из названия, форма представления основана на подмножестве языка программирования JavaScript; тем не менее, эта форма полностью не зависит от языка. Помимо того, что легко человеку читать и писать, форма данных также легка для машининного для разбора и генерации. | [http://www.json.org JSON](JavaScript Object Notation) является формой представления данных, которая обеспечивает стандартизированный формат обмена данными, используя простой текст. Как следует из названия, форма представления основана на подмножестве языка программирования JavaScript; тем не менее, эта форма полностью не зависит от языка. Помимо того, что легко человеку читать и писать, форма данных также легка для машининного для разбора и генерации. | ||
Line 23: | Line 23: | ||
Название должно быть строкой в двойных кавычках, в то время как значение может быть любым из следующих: | Название должно быть строкой в двойных кавычках, в то время как значение может быть любым из следующих: | ||
− | * простая строка, число, логическое значение или null (строки заключены в двойные кавычки):<br />< | + | * простая строка, число, логическое значение или null (строки заключены в двойные кавычки):<br /> |
+ | <syntaxhighlight lang="javascript"> | ||
+ | { | ||
+ | "id":1, | ||
+ | "имя":"Валерий Шипков", | ||
+ | "женат":false | ||
+ | }</syntaxhighlight> | ||
− | * массив | + | * массив, который представляет собой набор значений, разделенных запятыми в квадратных скобках:<br /> |
+ | <syntaxhighlight lang="javascript"> | ||
+ | { | ||
+ | "простые_числа":[2, 3, 5, 7, 11, 13, 17], | ||
+ | "нечётные_числа":[1,3,5,7]} | ||
+ | }</syntaxhighlight> | ||
− | * | + | * объект, который представляет собой набор (имя пара/значение), заключенное в фигурные скобки:<br /> |
+ | <syntaxhighlight lang="javascript"> | ||
+ | { | ||
+ | "адрес":{"улица":"Аксакова", "город":"Калининград", "Страна":"Россия"} | ||
+ | }</syntaxhighlight> | ||
− | JSON | + | Объекты JSON могут быть вложены произвольно для создания еще более сложных объектов: |
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
{"user": | {"user": | ||
− | { " | + | { "ползь_номер": 1900, |
− | " | + | "ползь_имя": "В.Шипков", |
− | " | + | "пароль": "12345", |
− | " | + | "группа": [ "admins", "users", "maintainers"] |
} | } | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | == | + | == Правильный формат JSON == |
− | |||
− | |||
− | + | Есть несколько правил и руководящих принципов, которые определяют синтаксис JSON (см RFC 4627): | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | * Объекты JSON включаются в открывающиеся и закрывающиеся фигурные скобки <code>{ }</code>.Пустой объект представлен только <code>{ }</code> | |
− | + | * Массивы включаются в квадратные скобки <code>[ ]</code>. Пустой массив представлен как <code>[ ]</code> | |
− | * | + | * Члены представляются парами ключ/значение |
− | * | + | * Ключ должен содержаться в двойных скобках |
+ | * Каждый участник ДОЛЖЕН иметь уникальный ключ в пределах структуры объекта | ||
+ | * Значение члена должно содержаться в двойных кавычках, если это строка | ||
+ | * Булевы значения представляются в виде '''true''' или '''false''' в нижнем регистре | ||
+ | * Числовые значения представляются в формате с плавающей точкой двойной точности; Экспоненциальное(научное) представление поддерживается; числа не должны иметь ведущих нулей | ||
+ | * "Управляющие" символы в строке должны быть экранированы с помощью обратной косой черты | ||
+ | * Null представляется как '''null''' в нижнем регистре | ||
+ | * Другие типы объектов, такие как даты, которые изначально не поддерживаются и должны быть преобразованы в строки, управляются анализатором/клиентом | ||
+ | * Каждый член объекта или каждое значения массива должно сопровождаться запятой, если это не последний элемент | ||
+ | * Общее требование к расширению JSON-файлов '''.json''' | ||
+ | * MIME-тип для JSON-файлов '''application/json''' | ||
− | + | == Реализации == | |
+ | Реализация JSON не очень строгим, и предоставляет много свободы действий клиентским приложением и/или синтаксическим анализаторам для обеспечения соблюдения руководящих принципов. Как обычно при написании кода: | ||
+ | * вы свободны в своих определениях | ||
+ | * соблюдайте стандарт при обмене данными. | ||
− | + | Существуют две основных реализаций JSON: | |
− | |||
− | === | + | === Официальная спецификация синтаксиса JSON === |
− | + | Эта реализация строго придерживается руководящих принципов RFC 4627 и не допускает отклонений от спецификации. | |
− | + | === Синтаксис Javascript === | |
− | + | Эта реализация следует за реализацией языка программирования Javascript и как таковая позволяет несколько отклонений от официальной спецификации. Например: | |
− | |||
− | + | #разрешает ключи не заключать в двойные кавычки <code> {имя: "Валерий Шипков" }</code> | |
+ | #позволяет одиночные кавычки для ключей и/или строковых значений; и свободную смесь одиночных и двойных кавычек, например, <code>{'имя': "Валерий Шипков", "язык":'Pascal'}</code> | ||
+ | #позволяет запятую после последнего элемента массива и/или объекта, например,<code>{"ключ":["if","begin","for",], "IDEs":["Lazarus","fpIDE","MSEide"],}</code> | ||
− | + | == Смотрите также == | |
− | |||
− | |||
− | |||
− | |||
− | [[ | + | * [[fcl-json]] пакет, который реализует JSON для Free Pascal и Lazarus |
+ | * [http://www.json.org Официальный сайт JSON] | ||
+ | * [[Streaming JSON/de]] - (Оригинальная немецкая статья) | ||
+ | * [[Streaming JSON/ru]] - (Русский перевод с английского) | ||
+ | * [[Streaming JSON]] - (английский перевод с оригинала на немецком) |
Latest revision as of 11:38, 14 March 2016
│
English (en) │
suomi (fi) │
日本語 (ja) │
한국어 (ko) │
polski (pl) │
русский (ru) │
中文(中国大陆) (zh_CN) │
Обзор
JSON(JavaScript Object Notation) является формой представления данных, которая обеспечивает стандартизированный формат обмена данными, используя простой текст. Как следует из названия, форма представления основана на подмножестве языка программирования JavaScript; тем не менее, эта форма полностью не зависит от языка. Помимо того, что легко человеку читать и писать, форма данных также легка для машининного для разбора и генерации.
Также, по сравнению с XML, более удобна для восприятия человеком.
Объекты JSON
Объекты JSON являются не более чем наборами пар имя/значение, разделенных запятыми (которые часто называются члены), заключенные в фигурные скобки:
{"name1":value1, "name2":value2 ...}
Для того, чтобы придать человеческий вид, для чтения и наглядности, пары имя/значение часто перечисляются в столбик:
{
"name1": value1,
"name2": value2
}
Название должно быть строкой в двойных кавычках, в то время как значение может быть любым из следующих:
- простая строка, число, логическое значение или null (строки заключены в двойные кавычки):
{
"id":1,
"имя":"Валерий Шипков",
"женат":false
}
- массив, который представляет собой набор значений, разделенных запятыми в квадратных скобках:
{
"простые_числа":[2, 3, 5, 7, 11, 13, 17],
"нечётные_числа":[1,3,5,7]}
}
- объект, который представляет собой набор (имя пара/значение), заключенное в фигурные скобки:
{
"адрес":{"улица":"Аксакова", "город":"Калининград", "Страна":"Россия"}
}
Объекты JSON могут быть вложены произвольно для создания еще более сложных объектов:
{"user":
{ "ползь_номер": 1900,
"ползь_имя": "В.Шипков",
"пароль": "12345",
"группа": [ "admins", "users", "maintainers"]
}
}
Правильный формат JSON
Есть несколько правил и руководящих принципов, которые определяют синтаксис JSON (см RFC 4627):
- Объекты JSON включаются в открывающиеся и закрывающиеся фигурные скобки
{ }
.Пустой объект представлен только{ }
- Массивы включаются в квадратные скобки
[ ]
. Пустой массив представлен как[ ]
- Члены представляются парами ключ/значение
- Ключ должен содержаться в двойных скобках
- Каждый участник ДОЛЖЕН иметь уникальный ключ в пределах структуры объекта
- Значение члена должно содержаться в двойных кавычках, если это строка
- Булевы значения представляются в виде true или false в нижнем регистре
- Числовые значения представляются в формате с плавающей точкой двойной точности; Экспоненциальное(научное) представление поддерживается; числа не должны иметь ведущих нулей
- "Управляющие" символы в строке должны быть экранированы с помощью обратной косой черты
- Null представляется как null в нижнем регистре
- Другие типы объектов, такие как даты, которые изначально не поддерживаются и должны быть преобразованы в строки, управляются анализатором/клиентом
- Каждый член объекта или каждое значения массива должно сопровождаться запятой, если это не последний элемент
- Общее требование к расширению JSON-файлов .json
- MIME-тип для JSON-файлов application/json
Реализации
Реализация JSON не очень строгим, и предоставляет много свободы действий клиентским приложением и/или синтаксическим анализаторам для обеспечения соблюдения руководящих принципов. Как обычно при написании кода:
- вы свободны в своих определениях
- соблюдайте стандарт при обмене данными.
Существуют две основных реализаций JSON:
Официальная спецификация синтаксиса JSON
Эта реализация строго придерживается руководящих принципов RFC 4627 и не допускает отклонений от спецификации.
Синтаксис Javascript
Эта реализация следует за реализацией языка программирования Javascript и как таковая позволяет несколько отклонений от официальной спецификации. Например:
- разрешает ключи не заключать в двойные кавычки
{имя: "Валерий Шипков" }
- позволяет одиночные кавычки для ключей и/или строковых значений; и свободную смесь одиночных и двойных кавычек, например,
{'имя': "Валерий Шипков", "язык":'Pascal'}
- позволяет запятую после последнего элемента массива и/или объекта, например,
{"ключ":["if","begin","for",], "IDEs":["Lazarus","fpIDE","MSEide"],}
Смотрите также
- fcl-json пакет, который реализует JSON для Free Pascal и Lazarus
- Официальный сайт JSON
- Streaming JSON/de - (Оригинальная немецкая статья)
- Streaming JSON/ru - (Русский перевод с английского)
- Streaming JSON - (английский перевод с оригинала на немецком)