Difference between revisions of "JSON/ru"
Prospero78su (talk | contribs) |
Prospero78su (talk | contribs) |
||
Line 61: | Line 61: | ||
Есть несколько правил и руководящих принципов, которые определяют синтаксис JSON (см RFC 4627): | Есть несколько правил и руководящих принципов, которые определяют синтаксис JSON (см RFC 4627): | ||
− | * Объекты JSON включаются в открывающиеся и закрывающиеся скобки <code>{ }</code>. | + | * Объекты JSON включаются в открывающиеся и закрывающиеся фигурные скобки <code>{ }</code>.Пустой объект представлен только <code>{ }</code> |
− | * | + | * Массивы включаются в квадратные скобки <code>[ ]</code>. Пустой массив представлен как <code>[ ]</code> |
− | * | + | * Члены представляются парами ключ/значение |
− | * | + | * Ключ должен содержаться в двойных скобках |
− | * | + | * Каждый участник ДОЛЖЕН иметь уникальный ключ в пределах структуры объекта |
− | * | + | * Значение члена должно содержаться в двойных кавычках, если это строка |
− | * | + | * Булевы значения представляются в виде '''true''' или '''false''' в нижнем регистре |
− | * | + | * Числовые значения представляются в формате с плавающей точкой двойной точности; Экспоненциальное(научное) представление поддерживается; числа не должны иметь ведущих нулей |
− | * " | + | * "Управляющие" символы в строке должны быть экранированы с помощью обратной косой черты |
− | * Null | + | * Null представляется как '''null''' в нижнем регистре |
− | * | + | * Другие типы объектов, такие как даты, которые изначально не поддерживаются и должны быть преобразованы в строки, управляются анализатором/клиентом |
− | * | + | * Каждый член объекта или каждое значения массива должно сопровождаться запятой, если это не последний элемент |
− | * | + | * Общее требование к расширению JSON-файлов '''.json''' |
− | * | + | * MIME-тип для JSON-файлов '''application/json''' |
== Implementations == | == Implementations == |
Revision as of 10:58, 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
Implementations
JSON implementation is not very strict, and a lot of leeway is granted to the client application and/or parser to enforce the guidelines. As usual when writing code:
- be liberal in what you accept
- be strict (adhering to the standard) in what you send.
There are two main implementations of JSON:
The official JSON Specification syntax
This implementation adheres strictly to the RFC 4627 guidelines above and does not allow deviation from the specification.
The Javascript syntax
This implementation follows the implementation of the Javascript programming language and as such allows for a few deviations from the official specification. For example:
- allows un-quoted keys eg
{name: "John Doe" }
- allows single quotes for keys and/or string values; and a liberal mix of single and double quotes eg
{'name': "John Doe", "language":'Pascal'}
- allows trailing comma after the last member of an array and/or object eg
{"keywords":["if","begin","for",], "IDEs":["Lazarus","fpIDE","MSEide"],}
See also
- fcl-json package that implements JSON for FreePascal and Lazarus
- Official JSON website
- Streaming JSON/de - (Original German article)
- Streaming JSON/ru - (Russian translation from English )
- Streaming JSON - (English translation from original German)