![]() |
PIP 5.6.1
Platform-Independent Primitives
|
Узел дерева JSON. Подробнее...
#include <pijson.h>
Открытые типы | |
| enum | Type { Invalid , Null , Boolean , Number , String , Object , Array } |
| Тип узла JSON. Подробнее... | |
| enum | PrintType { Compact , Tree } |
| Режим форматирования JSON-текста. Подробнее... | |
Открытые члены | |
| PIJSON () | |
| Создает недействительный PIJSON. | |
| PIJSON (const PIJSON &o)=default | |
| Конструктор копирования. | |
| const PIString & | name () const |
| Возвращает имя узла, либо пустую строку для безымянных узлов. | |
| const PIVector< PIJSON > & | array () const |
| Возвращает дочерние элементы массива, либо пустой массив, если узел не имеет тип PIJSON::Array. | |
| const PIMap< PIString, PIJSON > & | object () const |
| Возвращает поля объекта, либо пустой словарь, если узел не имеет тип PIJSON::Object. | |
| const PIVariant & | value () const |
| Возвращает скалярное значение узла. | |
| bool | toBool () const |
| Возвращает скалярное значение как логическое. | |
| int | toInt () const |
| Возвращает скалярное значение как целое число. | |
| double | toDouble () const |
| Возвращает скалярное значение как число с плавающей точкой. | |
| PIString | toString () const |
| Возвращает скалярное значение как строку. | |
| Type | type () const |
| Возвращает тип узла. | |
| bool | isValid () const |
| Возвращает, является ли узел действительным. | |
| bool | isObject () const |
| Возвращает, является ли узел PIJSON::Object. | |
| bool | isArray () const |
| Возвращает, является ли узел PIJSON::Array. | |
| void | setValue (const PIVariant &v) |
| Устанавливает скалярное значение и обновляет тип узла для логических, числовых и строковых вариантов. Подробнее... | |
| void | clear () |
| Очищает содержимое узла и устанавливает тип PIJSON::Invalid. | |
| int | size () const |
| Возвращает длину массива или число полей объекта. Для остальных типов возвращает 0. | |
| bool | contains (const PIString &key) const |
| Возвращает, содержит ли узел-объект ключ key. | |
| void | resize (int new_size) |
| Преобразует узел в массив и изменяет его размер. Новые элементы становятся пустыми строками. | |
| PIJSON & | operator= (const PIVariant &v) |
| Аналог setValue(). | |
| PIJSON & | operator= (const PIJSON &v) |
| Оператор копирующего присваивания. | |
| const PIJSON & | operator[] (int index) const |
| Возвращает элемент массива по индексу, либо недействительный PIJSON, если узел не является массивом. | |
| PIJSON & | operator[] (int index) |
| Преобразует узел в массив, при необходимости увеличивает его и возвращает элемент по индексу. | |
| PIJSON & | operator<< (const PIJSON &element) |
| Преобразует узел в массив и добавляет другой узел JSON. | |
| PIJSON & | operator<< (const PIVariant &value) |
| Преобразует узел в массив и добавляет скалярное значение. | |
| PIJSON | operator[] (const PIString &key) const |
| Возвращает поле объекта по ключу, либо недействительный PIJSON, если узел не является объектом или ключ отсутствует. | |
| PIJSON & | operator[] (const PIString &key) |
| Преобразует узел в объект и возвращает поле по ключу, создавая его при необходимости. | |
| PIJSON | operator[] (const char *key) const |
| Вспомогательная перегрузка для доступа по UTF-8 ключу. | |
| PIJSON & | operator[] (const char *key) |
| Вспомогательная перегрузка для доступа по UTF-8 ключу. | |
| PIString | toJSON (PrintType print_type=Compact, bool mask_unicode=true) const |
| Возвращает JSON-текст для дерева узлов. | |
Открытые статические члены | |
| static PIJSON | fromJSON (PIString str) |
| Разбирает JSON-текст и возвращает корневой узел. | |
| static PIJSON | newObject (const PIVariantMap &fields={}) |
| Создает узел-объект, инициализированный из полей вариативного словаря. | |
| static PIJSON | newArray (const PIVariantVector &fields={}) |
| Создает узел-массив, инициализированный из вариативных элементов. | |
| static PIJSON | newString (const PIString &v=PIString()) |
| Создает строковый узел. | |
| template<typename T > | |
| static PIJSON | serialize (const T &v) |
| Сериализует значение v через набор перегрузок из pijsonserialization.h. Подробнее... | |
| template<typename T > | |
| static T | deserialize (const PIJSON &json) |
Десериализует значение типа T через набор перегрузок из pijsonserialization.h. Подробнее... | |
Узел дерева JSON.
Класс PIJSON предоставляет древовидную структуру для представления данных JSON. Каждый элемент может быть значением (с именем), массивом или объектом.
JSON - это древовидная структура, каждый элемент которой может быть либо парой имя:значение, либо массивом, либо объектом, т.е. именованным списком элементов. Корневой элемент JSON может быть либо массивом, либо объектом.
Массивы заключены в квадратные скобки [], их элементы не имеют имени и разделяются запятыми.
Объекты заключены в фигурные скобки {}, их элементы имеют имя и разделяются запятыми.
PIJSON представляет собой элемент дерева JSON. Каждый элемент имеет тип (type()) и может иметь имя (name()). Если это конечный элемент,то он будет иметь значение, доступное через value(), toBool(), toInt(), toDouble() или toString().
Если элемент преставляет собой массив, то его размер доступен через size(), а элементы массива через целочисленный оператор []. Весь массив доступен через array().
Если элемент преставляет собой объект, то его размер доступен через size(), а элементы объекта через строковый оператор []. Проверить наличие элемента по имени можно с помощью contains(). Весь объект доступен через object().
Создать дерево из текстового представления JSON можно с помощью fromJSON(), а преобразовать в текст с помощью toJSON().
Для создания нового дерева необходимо лишь создать пустой корневой PIJSON и заполнить его значениями, массивами или объектами с помощью целочисленного или строкового оператора []. В зависимости от типа аргумента элемент преобразуется либо в массив, либо в объект.
При приравнивании PIJSON к какому-либо значению, его тип автоматически установится в нужный. При обращении на запись целочисленным оператором [] размер массива автоматически увеличится при необходимости.
Строковые значения в стандарте JSON могут иметь в явном виде только печатные символы, спецсимволы и юникод должны быть преобразованы маскированием, т.е., например, вместо символа новой строки должно быть "\n", а не-ASCII символы должны быть в виде "\uXXXX".
Оператор вывода в PICout не выполняет маскирования строк.
Методы toJSON() и fromJSON() маскируют и размаскируют строковые поля.
Чтение:
Разбор:
Создание:
Простой массив
Массив объектов
| enum PIJSON::Type |
| enum PIJSON::PrintType |
| void PIJSON::setValue | ( | const PIVariant & | v | ) |
Устанавливает скалярное значение и обновляет тип узла для логических, числовых и строковых вариантов.
Если тип "v" логический, то устанавливает тип в PIJSON::Boolean.
Если тип "v" любой численный, то устанавливает тип в PIJSON::Number.
Если тип "v" строковый, то устанавливает тип в PIJSON::String.
Если тип "v" любой другой, то устанавливает тип в PIJSON::Invalid.
|
static |
Сериализует значение v через набор перегрузок из pijsonserialization.h.
Вспомогательная обертка над piSerializeJSON().
|
static |
Десериализует значение типа T через набор перегрузок из pijsonserialization.h.
Вспомогательная обертка над piDeserializeJSON().