![]() |
PIP 5.5.3
Platform-Independent Primitives
|
Класс JSON. Подробнее...
#include <pijson.h>
Открытые типы | |
| enum | Type { Invalid , Null , Boolean , Number , String , Object , Array } |
| Тип элемента дерева JSON. Подробнее... | |
| enum | PrintType { Compact , Tree } |
| Вариант генерации JSON. Подробнее... | |
Открытые члены | |
| PIJSON () | |
| Создает недействительный PIJSON. | |
| 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) |
| Устанавливает значение и тип элемента из "v". Подробнее... | |
| void | clear () |
| Очищает элемент и устанавливает его в PIJSON::Invalid. | |
| int | size () const |
| Возвращает размер массива элементов если тип PIJSON::Array, размер словаря элементов если тип PIJSON::Object, иначе возвращает 0. | |
| bool | contains (const PIString &key) const |
| Возвращает содержит ли словарь элементов ключ "key" если тип PIJSON::Object, иначе возвращает false. | |
| void | resize (int new_size) |
| Устанавливает тип элемента в PIJSON::Array и изменяет размер массива элементов на "new_size". | |
| PIJSON & | operator= (const PIVariant &v) |
| Аналог setValue(). | |
| const PIJSON & | operator[] (int index) const |
| Возвращает элемент из массива по индексу "index" если тип PIJSON::Array, иначе возвращает недействительный PIJSON. | |
| PIJSON & | operator[] (int index) |
| Устанавливает тип элемента в PIJSON::Array, изменяет размер массива при неоходимости и возвращает элемент из массива по индексу "index". | |
| PIJSON & | operator<< (const PIJSON &element) |
| Устанавливает тип элемента в PIJSON::Array и добавляет элемент в массив. | |
| PIJSON & | operator<< (const PIVariant &value) |
| Устанавливает тип элемента в PIJSON::Array и добавляет элемент в массив. | |
| PIJSON | operator[] (const PIString &key) const |
| Возвращает элемент из словаря по ключу "key" если тип PIJSON::Object, иначе возвращает недействительный PIJSON. | |
| PIJSON & | operator[] (const PIString &key) |
| Устанавливает тип элемента в PIJSON::Object и возвращает элемент из словаря по ключу "key". Если элемента с таким ключом не существует, он будет создан. | |
| PIString | toJSON (PrintType print_type=Compact, bool mask_unicode=true) const |
| Возвращает текстовое представление дерева JSON. | |
Открытые статические члены | |
| static PIJSON | fromJSON (PIString str) |
| Разбирает текстовое представление JSON "str" и возвращает его корневой элемент. | |
Класс 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".
Если тип "v" логический, то устанавливает тип в PIJSON::Boolean.
Если тип "v" любой численный, то устанавливает тип в PIJSON::Number.
Если тип "v" строковый, то устанавливает тип в PIJSON::String.
Если тип "v" любой другой, то устанавливает тип в PIJSON::Invalid.