PureBasic

ExtractJSONStructure()

Синтаксис

ExtractJSONStructure(JSONValue , *Buffer , Structure [, Flags])

Описание


Извлекает члены из объекта указанного JSON-значения типа #PB_JSON_Object в память указанной Структуры. Структура будет очищена от любого предыдущего содержимого, перед извлечением членов объекта из JSON-значения, если не установлен флаг #PB_JSON_NoClear

Параметры

JSONValue JSON-значение содержащее объект. Это значение должно быть типа #PB_JSON_Object.
*Buffer Адрес памяти Структуры, в которую будут помещаться данные.
Structure Тип Структуры для заполнения данными.
Flags (дополн.) Если установлен флаг #PB_JSON_NoClear, структура не будет очищена перед извлечением JSON-данных: если JSON-данные не определяют поле структуры, текущее значение поля будет сохранено. Если флаг не установлен, вся структура будет очищена перед извлечением данных из JSON.

Возвращаемое значение

Ничего.

Комментарии

Экстракция выполняется рекурсивно, если Структура содержит дополнительные Структуры, Массивы, Связные Списки или Хеш-Карты. Если JSON-значение содержит члены объекта, которые имеют не подходящий тип для соответствия элементу Структуры, они будут игнорироваться, а соответствующий элемент Структуры останется пустым.

Все символы '*' и '$' удаляются из имен элементов Структуры, прежде чем сравнивать их с членами объекта JSON-значения. Таким образом, ключ члена объекта не должен включать эти символы для правильного соответствия элементу Структуры.

Сравнение ключей членов объекта с именами элементов Структуры выполняется с учетом регистра. Если JSON-данные были созданы или проанализированы с помощью флага #PB_JSON_NoCase, сравнение выполняется без учета регистра.

Пример

Structure Person
    Name$
    Age.l
    List Books.s()
EndStructure

Input$ = "{" + Chr(34) + "Name" + Chr(34) + ": " + Chr(34) + "John Smith" + Chr(34) + ", " +
        Chr(34) + "Age" + Chr(34) + ": 42, " +
        Chr(34) + "Books" + Chr(34) + ": [" +
        Chr(34) + "Investing For Dummies" + Chr(34) + ", " +
        Chr(34) + "A Little Bit of Everything For Dummies" + Chr(34) + "] }"

ParseJSON(0, Input$)
ExtractJSONStructure(JSONValue(0), @P.Person, Person)

Debug P\Name$
Debug P\Age
Debug ListSize(P\Books())

См. также

ExtractJSONArray(), ExtractJSONList(), ExtractJSONMap(), InsertJSONArray(), InsertJSONList(), InsertJSONMap(), InsertJSONStructure(), SetJSONObject(), JSONType()

Поддерживаемые OS

Все

<- ExtractJSONMap() - Оглавление Json - FreeJSON()->