Понимание JSON

JSON (JavaScript Object Notation) - это легковесный синтаксис для обмена данными, которые понимают как люди, так и машины. Как следует из названия, JSON основан на скриптовом языке JavaScript; однако, JSON сам по себе полностью не зависим от языка.

JSON является популярной нотацией для передачи данных между RESTful web-сервисами. Многочисленные библиотеки для большинства языков программирования позволяют легко парсить JSON данные, а многие web-фреймворки также поддерживают формирование JSON как данные ответа. А так как JSON занимает меньший размер, чем XML, то он является идеалом в условиях, когда скорость сети ограничена. К примеру, мобильные устройства часто имеют медленное соединение и поэтому выгоднее загружать меньше данных.

Официальный MIME-тип для JSON - application/json, а JSON файлы обычно имеют расширение .json.

Структура

JSON состоит из двух основных структур:

  • Пары имя/значение
  • Упорядоченный список значений

Значения могут быть одним из нижеописанных типов, а также состоять друг в друге

  • String (Unicode)
  • Number
  • Boolean (true или false)
  • Array
  • Object
  • null (пусто)

Примеры

Этот объект имеет три поля, где "name" - string, "age" - number, "member" - boolean.

{
    "name": "John",
    "age":  35,
    "member": false
}

Массивы состоят из списка значений, которые могут состоять из разных типов. Этот объект имеет два массива; массив "indexes" состоит из чисел, "names" - из строк.

{
    "indexes": [5, 10, 15, 20],
    "names": ["John", "Elizabeth", "Mary"]
}

Карта контактов для адресной книги является более сложным примером. Этот пример объединяет множество элементов, включая составные объекты и массивы.

{
    "firstName": "John",
    "lastName": "Smith",
    "birthday": "1975-01-31",
    "spouse": {
        "firstName": "Mary",
        "lastName": "Smith"
    },
    "addresses": [
        {
            "description": "home",
            "street": "123 Peachtree Ln",
            "city": "Atlanta",
            "state": "GA",
            "postalCode": 30305
        },
        {
            "description": "work",
            "street": "456 Peachtree St",
            "city": "Atlanta",
            "state": "GA",
            "postalCode": 30305
        }
    ],
    "phoneNumbers": [
        {
            "description": "home",
            "number": "404-555-1234"
        },
        {
            "description": "mobile",
            "number": "678-555-1234"
        }
    ]
}

С оригинальным текстом урока вы можете ознакомиться на spring.io.

comments powered by Disqus