JSON: различия между версиями

[непроверенная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
отмена правки 102155470 участника 81.30.83.98 (обс.)
Метка: отмена
стилевые правки. убрал несущественные детали и тп
Строка 10:
== Использование ==
За счёт своей лаконичности по сравнению с [[XML]], формат JSON может быть более подходящим для [[Сериализация|сериализации]] сложных структур.
ЕслиПрименяется говорить ов веб-приложениях, в таком ключе он уместен вкак задачахдля обмена данными как между обозревателем[[Браузер|браузером]] и сервером ([[AJAX]]), так и между самими серверами (программные [[HTTP]]-сопряжения).
 
Поскольку формат JSON является подмножеством синтаксиса языка JavaScript, то он может быть быстро десериализован встроенной функцией <code>eval()</code>.
Кроме того, возможна вставка вполне работоспособных JavaScript-функций.
В языке [[PHP]], начиная с версии 5.2.0, поддержка JSON включена в ядро в виде функций <tt>json_decode()</tt> и <tt>json_encode()</tt>, которые сами преобразуют типы данных JSON в соответствующие типы PHP и наоборот.
 
== Синтаксис ==
JSON-текст представляет собой (в закодированном виде) одну из двух структур:
* Набор пар ''ключ: значение''. В различных языках это реализовано как [[Запись (тип данных)|запись]], [[Структура данных|структура]], [[Ассоциативный массив|словарь]], [[хеш-таблица]], [[Список (информатика)|список]] с ключом или [[ассоциативный массив]]. Ключом может быть только строка ([[Чувствительность к регистру символов|регистрозависимая]]: имена с буквами в разных регистрах считаются разными<ref>http://jsonrpc.org/historical/json-rpc-1-1-alt.html#service-procedure-and-parameter-names</ref>), значением — любая форма.
* Упорядоченный набор ''значений''. Во многих языках это реализовано как [[Массив (программирование)|массив]], [[индексный массив|вектор]], список или [[последовательность]].
 
<!-- абзац не нужен -->Это универсальные структурыСтруктуры данных:, какиспользуемые правилоJSON, любойподдерживаются современныйлюбым языксовременным языком программирования, поддерживаетчто ихи впозволяет той или иной форме. Они легли в основуприменять JSON, так как он используется для обмена данными между различными языками программирования и программными системами.
 
В качестве значений в JSON могут быть использованы:
Строка 30 ⟶ 28 :
* '''Строка''' — это упорядоченное множество из нуля или более символов [[юникод]]а, заключённое в двойные кавычки. Символы могут быть указаны с использованием [[escape-последовательность|escape-последовательностей]], начинающихся с [[Обратная косая черта|обратной косой черты]] ''«\»'' (поддерживаются варианты \', \", \\, \/, \t, \n, \r, \f и \b), или записаны шестнадцатеричным кодом в кодировке [[Unicode]] в виде \uFFFF.
 
''Строка'' очень похожа на одноимённый[[Литерал тип(информатика)|литерал]] одноимённого типа данных в языке [[Javascript]]. ''Число'' тоже очень похоже на Javascript-число, за исключением того, что используется только [[Десятичная дробь|десятичный формат]] (с точкой в качестве разделителя). Пробелы могут быть вставлены между любыми двумя синтаксическими элементами.
 
Следующий пример показывает JSON-представление данных об объекте, описывающем человека. В данных естьприсутствуют ''строковые'' поля имени и фамилии, информация описывающаяоб адрес,адресе и массив, содержащий список телефонов. Как видно из примера, ''значение'' может представлять собой вложенную структуру.
 
<source lang="javascript">
Строка 50 ⟶ 48 :
</source>
 
Обратите внимание на пару "postalCode": "101101". В качестве значений в JSON могут быть использованы как число так и строка. Поэтому запись "postalCode": "101101" содержит строку, а "postalCode": 101101 - уже числовое значение. УчитываяИз-за неопределенность[[Сильная типаи переменныхслабая типизация|слабой типизации]] в JSJavascript (определеныи толькоPHP типычисло значений),может вбыть дальнейшем,приведено какк правило,числу и не возникаетвлиять проблемна с приведениемлогику типапрограммы. НоТем еслине данныеменее, врекомендуется форматеаккуратно JSONобращаться обрабатываютсяс втипом другой средезначения, отличнойтак откак JS,JSON тослужит нужнодля бытьмежсистемного внимательнымобмена.
 
На языке XML подобная структура выглядела бы примерно так: