Difference between revisions of "JSON/ru"

From Lazarus wiki
Jump to navigationJump to search
 
(10 intermediate revisions by one other user not shown)
Line 1: Line 1:
 
{{JSON}}
 
{{JSON}}
  
== Overview ==
+
== Обзор ==
 
[http://www.json.org JSON](JavaScript Object Notation) является формой представления данных, которая обеспечивает стандартизированный формат обмена данными, используя простой текст. Как следует из названия, форма представления основана на подмножестве языка программирования JavaScript; тем не менее, эта форма полностью не зависит от языка. Помимо того, что легко человеку читать и писать, форма данных также легка для машининного для разбора и генерации.
 
[http://www.json.org JSON](JavaScript Object Notation) является формой представления данных, которая обеспечивает стандартизированный формат обмена данными, используя простой текст. Как следует из названия, форма представления основана на подмножестве языка программирования JavaScript; тем не менее, эта форма полностью не зависит от языка. Помимо того, что легко человеку читать и писать, форма данных также легка для машининного для разбора и генерации.
  
Line 23: Line 23:
 
Название должно быть строкой в двойных кавычках, в то время как значение может быть любым из следующих:
 
Название должно быть строкой в двойных кавычках, в то время как значение может быть любым из следующих:
  
* простая строка, число, логическое значение или null (строки заключены в двойные кавычки):<br /><code>{"id":1, "имя":"Вася Петров", "женат":false}</code>
+
* простая строка, число, логическое значение или null (строки заключены в двойные кавычки):<br />
 +
<syntaxhighlight lang="javascript">
 +
{
 +
    "id":1,
 +
    "имя":"Валерий Шипков",
 +
    "женат":false
 +
}</syntaxhighlight>
  
* массив; который представляет собой набор значений, разделенных запятыми в квадратных скобках:<br /><code>{"простые_числа":[2, 3, 5, 7, 11, 13, 17], "нечётные_числа":[1,3,5,7]}</code>
+
* массив, который представляет собой набор значений, разделенных запятыми в квадратных скобках:<br />
 +
<syntaxhighlight lang="javascript">
 +
{
 +
    "простые_числа":[2, 3, 5, 7, 11, 13, 17],
 +
    "нечётные_числа":[1,3,5,7]}
 +
}</syntaxhighlight>
  
* an object; which is a collection of name:value pairs enclosed in curly brackets:<br /><code>{"address":{"street":"145 Koinange Street", "City":"Nairobi", "Country":"Kenya"}}</code>
+
* объект, который представляет собой набор (имя пара/значение), заключенное в фигурные скобки:<br />
 +
<syntaxhighlight lang="javascript">
 +
{
 +
    "адрес":{"улица":"Аксакова", "город":"Калининград", "Страна":"Россия"}
 +
}</syntaxhighlight>
  
  
JSON objects can always be nested arbitrarily to create even more complex objects:
+
Объекты JSON могут быть вложены произвольно для создания еще более сложных объектов:
  
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
 
{"user":
 
{"user":
{ "userid": 1900,
+
{ "ползь_номер": 1900,
"username": "jsmith",
+
"ползь_имя": "В.Шипков",
"password": "secret",
+
"пароль": "12345",
"groups": [ "admins", "users", "maintainers"]
+
"группа": [ "admins", "users", "maintainers"]
 
}
 
}
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
== Valid JSON format ==
+
== Правильный формат JSON ==
 
 
There are a few rules and guidelines that define the JSON syntax (see RFC 4627):
 
  
* JSON objects are encapsulated within opening and closing brackets <code>{ }</code>. An empty object can be represented by <code>{ }</code>
+
Есть несколько правил и руководящих принципов, которые определяют синтаксис JSON (см RFC 4627):
* Arrays are encapsulated within opening and closing square brackets <code>[ ]</code>. An empty array can be represented by <code>[ ]</code>
 
* A member is represented by a key-value pair
 
* The key of a member should be contained in double quotes
 
* Each member SHOULD have a unique key within an object structure
 
* The value of a member must be contained in double quotes if it is a string
 
* Boolean values are represented using the '''true''' or '''false''' literals in lower case
 
* Number values are represented using double-precision floating-point format; Scientific notation is supported; Numbers should not have leading zeroes
 
* "Offensive" characters in a string need to be escaped using the backslash character
 
* Null values are represented by the '''null''' literal in lower case
 
* Other object types, such as dates, are not natively supported and should be converted to strings; to be managed by the parser/client
 
* Each member of an object or each array value must be followed by a comma if it is not the last one
 
* The common extension for json files is '''.json'''
 
* The MIME type for json files is '''application/json'''
 
  
== Implementations ==
+
* Объекты JSON включаются в открывающиеся и закрывающиеся фигурные скобки <code>{ }</code>.Пустой объект представлен только <code>{ }</code>
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:
+
* Массивы включаются в квадратные скобки <code>[ ]</code>. Пустой массив представлен как <code>[ ]</code>
* be liberal in what you accept
+
* Члены представляются парами ключ/значение
* be strict (adhering to the standard) in what you send.
+
* Ключ должен содержаться в двойных скобках
 +
* Каждый участник ДОЛЖЕН иметь уникальный ключ в пределах структуры объекта
 +
* Значение члена должно содержаться в двойных кавычках, если это строка
 +
* Булевы значения представляются в виде '''true''' или '''false''' в нижнем регистре
 +
* Числовые значения представляются в формате с плавающей точкой двойной точности; Экспоненциальное(научное) представление поддерживается; числа не должны иметь ведущих нулей
 +
* "Управляющие" символы в строке должны быть экранированы с помощью обратной косой черты
 +
* Null представляется как '''null''' в нижнем регистре
 +
* Другие типы объектов, такие как даты, которые изначально не поддерживаются и должны быть преобразованы в строки, управляются анализатором/клиентом
 +
* Каждый член объекта или каждое значения массива должно сопровождаться запятой, если это не последний элемент
 +
* Общее требование к расширению JSON-файлов '''.json'''
 +
* MIME-тип для JSON-файлов '''application/json'''
  
There are two main implementations of JSON:
+
== Реализации ==
 +
Реализация JSON не очень строгим, и предоставляет много свободы действий клиентским приложением и/или синтаксическим анализаторам для обеспечения соблюдения руководящих принципов. Как обычно при написании кода:
 +
* вы свободны в своих определениях
 +
* соблюдайте стандарт при обмене данными.
  
=== The official JSON Specification syntax ===
+
Существуют две основных реализаций JSON:
This implementation adheres strictly to the RFC 4627 guidelines above and does not allow deviation from the specification.
 
  
=== The Javascript syntax ===
+
=== Официальная спецификация синтаксиса JSON ===
This implementation follows the implementation of the Javascript programming language and as such allows for a few deviations from the official specification. For example:
+
Эта реализация строго придерживается руководящих принципов RFC 4627 и не допускает отклонений от спецификации.
  
#allows un-quoted keys eg <code> {name: "John Doe" }</code>
+
=== Синтаксис Javascript ===
#allows single quotes for keys and/or string values; and a liberal mix of single and double quotes eg <code>{'name': "John Doe", "language":'Pascal'}</code>
+
Эта реализация следует за реализацией языка программирования Javascript и как таковая позволяет несколько отклонений от официальной спецификации. Например:
#allows trailing comma after the last member of an array and/or object eg <code>{"keywords":["if","begin","for",], "IDEs":["Lazarus","fpIDE","MSEide"],}</code>
 
  
== See also ==
+
#разрешает ключи не заключать в двойные кавычки <code> {имя: "Валерий Шипков" }</code>
 +
#позволяет одиночные кавычки для ключей и/или строковых значений; и свободную смесь одиночных и двойных кавычек, например, <code>{'имя': "Валерий Шипков", "язык":'Pascal'}</code>
 +
#позволяет запятую после последнего элемента массива и/или объекта, например,<code>{"ключ":["if","begin","for",], "IDEs":["Lazarus","fpIDE","MSEide"],}</code>
  
* [[fcl-json]] package that implements JSON for FreePascal and Lazarus
+
== Смотрите также ==
* [http://www.json.org Official JSON website]
 
* [[Streaming JSON/de]] - (Original German article)
 
* [[Streaming JSON/ru]] - (Russian translation from English )
 
* [[Streaming JSON]]  - (English translation from original German)
 
  
[[Category:JSON]]
+
* [[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 и как таковая позволяет несколько отклонений от официальной спецификации. Например:

  1. разрешает ключи не заключать в двойные кавычки {имя: "Валерий Шипков" }
  2. позволяет одиночные кавычки для ключей и/или строковых значений; и свободную смесь одиночных и двойных кавычек, например, {'имя': "Валерий Шипков", "язык":'Pascal'}
  3. позволяет запятую после последнего элемента массива и/или объекта, например,{"ключ":["if","begin","for",], "IDEs":["Lazarus","fpIDE","MSEide"],}

Смотрите также