Json и Qt

JSON: назначение, структура и особенности формата

обновлено 508 просмотров

JSON (JavaScript Object Notation) — это текстовый формат обмена данными, который обычно хранится в файлах с расширением .json. Благодаря лаконичности по сравнению с XML он позволяет описывать достаточно сложные структуры, оставаясь при этом компактным и удобочитаемым.

Наибольшее распространение JSON получил в веб-разработке: его часто используют для обмена данными между сервером и клиентом. Кроме того, формат удобен для хранения настроек — благодаря наглядной структуре его легко воспринимать визуально. Однако важно учитывать: JSON не поддерживает комментарии ни в каком виде.

Структура JSON

В основе формата лежат две структуры данных:

  • Ключ — значение. Такой набор соответствует записи, структуре или словарю.
  • Упорядоченный список значений. Он аналогичен массиву, вектору или списку.

В качестве значений могут выступать:

  • Объект — неупорядоченный набор пар «ключ : значение». Объект заключается в фигурные скобки { }, ключ и значение разделяются двоеточием, а пары — запятой.
  • Массив — упорядоченная коллекция значений, ограниченная квадратными скобками [ ]. Элементы массива также разделяются запятой.
  • Значение — строка в двойных кавычках, число, true, false, null, объект или массив. Все эти структуры могут быть вложены друг в друга.
  • Строка — записывается по правилам языка C; допускается использование escape-последовательностей, а также символов в шестнадцатеричном виде в кодировке Unicode.
  • Число — также соответствует представлению в C и использует только десятичную систему счисления.

Пример объекта

Ниже приведён объект, в котором задействованы все перечисленные типы значений:

{
  "hello": "world",
  "t": true,
  "f": false,
  "n": null,
  "i": 123,
  "pi": 3.1416,
  "a": [1, 2, 3, 4]
}

Разберём назначение ключей:

  • "hello": "world" — строка с ключом hello имеет значение world.
  • "t": true — значение с ключом t равно true.
  • "f": false — значение с ключом f равно false.
  • "n": null — значение с ключом n равно null.
  • "i": 123 — число с ключом i равно 123.
  • "pi": 3.1416 — число с ключом pi равно 3.1416.
  • "a": [1, 2, 3, 4] — массив с ключом a содержит значения от 1 до 4.