Что такое JSON?
JSON - это легкое текстовое представление для хранения и передачи структурированных данных организованным способом. Данные JSON представлены в виде упорядоченных списков и пар ключ-значение. JSON означает JаваSскрипт Object Nответ. Как видно из полного названия, он получен из JavaScript. Однако данные JSON поддерживаются в большинстве популярных языков программирования.
Часто используется для передачи данных с сервера на веб-страницу. Представлять структурированные данные в JSON намного проще и чище, чем в XML.
Правило синтаксиса JSON
Вот правила синтаксиса JSON:
- Данные JSON всегда должны быть в виде пар ключ-значение.
- Данные JSON разделяются запятыми.
- Фигурная скобка используется для представления объекта JSON.
- Квадратная скобка используется для представления массива JSON.
Что такое данные JSON?
Данные JSON представлены в виде пар ключ-значение. Это похоже на словарь или хеш в других языках программирования.
«Имя»: «Дрейк»
Это пример простых данных JSON. Ключ здесь - «Имя», а «Дрейк» - соответствующее значение. Ключ, я.е., «Имя» и значение, i.е., «Селезень» разделяются двоеточием.
Расширение файла JSON
Данные JSON обычно хранятся в файле с расширением «.json ». Например, чтобы сохранить данные сотрудника, вы можете просто назвать файл как «сотрудник.json '. Это будет простой текстовый файл. Затем вы можете открыть этот файл JSON в любом из ваших любимых текстовых редакторов.
Объект JSON
Объект JSON - это не что иное, как данные JSON, заключенные в фигурные скобки. Вот пример объекта JSON:
«Имя»: «Дрейк»,
«Идентификатор сотрудника»: «23547a»,
«Телефон»: «23547»,
«Департамент»: «Финансы»
Объект JSON может содержать несколько данных JSON. Все данные JSON разделяются запятой. Данные JSON представлены в виде пар ключ-значение. Ключ, я.е., «Имя» и значение, i.е., «Селезень» разделяются двоеточием. В приведенном выше примере четыре пары "ключ-значение". Первый ключ - «Имя»; «Дрейк» - соответствующее значение для него. Аналогичным образом, «EmployeeID», «Телефон» и «Отдел» являются тремя другими ключами.
Массив JSON
Массив JSON может содержать несколько объектов JSON, разделенных запятыми. Массив JSON заключен в квадратную скобку. Давайте посмотрим на пример массива JSON:
"Студенты":["firstName": "Шон", "lastName": "Коричневый",
"firstName": "Дрейк", "lastName": "Уильямс",
"firstName": "Том", "lastName": "Миллер",
«FirstName»: «Питер», «lastName»: «Джонсон»
]
Это пример массива JSON. Здесь «Студенты» заключены в квадратные скобки, i.е., массив, и он содержит четыре объекта JSON. Каждый из этих объектов представлен в виде пар "ключ-значение" и разделен запятой.
Пример файла JSON
Теперь, когда мы разобрались с данными JSON, объектами JSON, массивом JSON, давайте посмотрим на пример файла JSON:
«FirstName»: «Шон»,
«LastName»: «Коричневый»,
«Студенческий билет»: 21453,
«Кафедра»: «Компьютерные науки».”,
«Предметы»: [«Математика», «Физика», «Химия»]
Разбор библиотек в C ++:
Нет собственного решения для разбора данных JSON в C++. Однако есть несколько библиотек для анализа данных JSON в C++. В этой статье мы рассмотрим две самые популярные библиотеки для анализа данных JSON на C++. Вот ссылки GitHub для анализа данных JSON:
- https: // github.com / nlohmann / json
- https: // github.com / Tencent / rapidjson /
Вы можете загрузить эти библиотеки, чтобы иметь возможность выполнять примеры, показанные ниже.
Примеры
Теперь у нас есть базовое представление о данных JSON, объектах, массивах и доступных библиотеках синтаксического анализа. Давайте теперь рассмотрим несколько примеров для анализа данных JSON в C ++:
- Пример-1: синтаксический анализ JSON на C++
- Пример-2: синтаксический анализ и сериализация JSON в C++
- Пример-3: Разбор JSON на C++
В Примере-1 и Примере-2 мы собираемся использовать библиотеку «nlohmann». В случае Примера-3 мы будем использовать библиотеку RapidJSON.
Пример-1: синтаксический анализ JSON на C++
В этом примере программы мы продемонстрируем, как получить доступ к значениям данных JSON в C++.
#включать#include "json.hpp "
используя json = nlohmann :: json;
int main ()
// jdEmployees
json jdEmployees =
"firstName", "Шон",
"lastName", "Коричневый",
"StudentID", 21453,
"Кафедра", "Компьютерные науки"."
;
// Доступ к значениям
std :: string fName = jdEmployees.значение ("firstName", "ой");
std :: string lName = jdEmployees.значение ("lastName", "ой");
int sID = jdEmployees.значение ("StudentID", 0);
std :: string dept = jdEmployees.значение ("Отдел", "упс");
// Распечатываем значения
std :: cout << "First Name: " << fName << std::endl;
std :: cout << "Last Name: " << lName << std::endl;
std :: cout << "Student ID: " << sID << std::endl;
std :: cout << "Department: " << dept << std::endl;
возврат 0;
Пример-2: синтаксический анализ и сериализация JSON в C++
В этом примере программы мы увидим, как анализировать и сериализовать JSON в C++. Мы используем «json :: parse ()» для анализа данных JSON.
#включать#include "json.hpp "
#включать
используя json = nlohmann :: json;
int main ()
// Вот текст JSON
char text [] = R "(
"Книга":
«Ширина»: 450,
«Высота»: 30,
"Название": "Привет, мир",
"isBiography": false,
«NumOfCopies»: 4,
"LibraryIDs": [2319, 1406, 3854, 987]
) ";
// Давайте проанализируем и сериализуем JSON
json j_complete = json :: parse (текст);
std :: cout << std::setw(4) << j_complete << std::endl;
Пример-3: Разбор JSON на C++
Теперь мы продемонстрируем, как анализировать строку JSON с помощью библиотеки RapidJSON. RapidJSON изначально был вдохновлен RapidXML. В этом примере программы мы анализируем строку JSON в DOM. Мы объявили «mydoc» типа «Документ», а затем с помощью «mydoc.parse () »для анализа строки JSON.
#включать#include "rapidjson / writer.час"
#include "rapidjson / document.час"
#include "rapidjson / stringbuffer".час"
используя пространство имен rapidjson;
int main ()
const char * json = "" firstName ":" Sean "," lastName ":" Brown "," empId ": 21453,
«кафедра»: «Компьютерные науки»."";
// Разбираем строку JSON в DOM
Документ mydoc;
mydoc.Разбор (json);
// DOM в строку
StringBuffer buffer;
Писатель
mydoc.Принять (писатель);
// Распечатываем вывод
std :: cout << buffer.GetString() << std::endl;
возврат 0;
Заключение
В этой статье мы кратко обсудили данные, объект, массив и синтаксис JSON. Как мы знаем, в C ++ нет собственного решения для синтаксического анализа данных JSON; мы использовали две разные библиотеки для анализа данных JSON в C++. Мы рассмотрели три разных примера, чтобы продемонстрировать механизм синтаксического анализа данных JSON в C++. По сравнению с библиотекой «nlohmann» RapidJSON маленький, быстрый и удобный для памяти.