[Обзор][Константы][Типы][Классы][Процедуры и функции][Указатель] Описание модуля 'fpjson' (#fcl)

Описание модуля 'fpjson'

***Поддержка JSON для Free Pascal

uses

  System,

  variants,

  sysutils,

  Classes,

  contnrs;

  

***Различные классы общего назначения (стек, очереди, списки объектов)

Обзор

Блок JSON реализует поддержку JSON для Free Pascal. Он содержит структуры данных (tjsondata и объекты-потомки) для обработки данных JSON и вывода JSON в виде строки TJSONData.AsJSON. Сгенерированный JSON может быть отформатирован несколькими способами TJSONData.Формат.

Использование структур данных JSON является простым. Создайте экземпляр соответствующего потомка TJSONData, установите данные и вызовите AsJSON. Поддерживаются следующие типы данных JSON:

Numbers
в одном из TJSONIntegerNumber, TJSONFloatNumber или TJSONInt64Number, в зависимости от типа номера.
Strings
в TJSONString.
Boolean
в TJSONBoolean.
null
поддерживается с помощью TJSONNull
Array
поддерживается с помощью TJSONArray
Object
поддерживается с помощью TJSONObject

Конструкторы этих объектов позволяют задавать значения, что делает их очень простыми в использовании. Управление памятью является автоматическим в том смысле, что массивы и объекты владеют своими значениями, и когда массив или объект освобождается, все данные в нем также освобождаются.

Типичное использование будет:

Var
  O : TJSONObject;
  
begin
  O:=TJSONObject.Create(['Age',44,
                         'Firstname','Michael',
                         'Lastname','Van Canneyt']);
  Writeln(O.AsJSON);
  Write('Welcome ',O.Strings['Firstname'],', ');
  Writeln(O.Get('Lastname','')); // empty default.
  Writeln(', your current age is ',O.Integers('Age']);
  O.Free;                       
end;      

Классы tjsonarray и TJSONObject предлагают методы для изучения, получения и установки различных членов и поиска по различным членам.

В настоящее время поддержка JSON позволяет использовать только данные UTF-8.

Разбор входящего JSON и построение структур данных JSON не реализованы в блоке fpJSON. Для этого модуль jsonscanner должен быть включен в предложение program unit. Это устанавливает несколько крючков обратного вызова (используя SetJSONParserHandler, а затем функцию GetJSON можно использовать для преобразования строки или потока в структуры данных JSON:

uses fpjson, jsonparser;

Var   
  D,E : TJSONData;
      
begin 
  D:=GetJSON('{ "Children" : ['+
             '  { "Age" : 23, '+
             '    "Names" : { "LastName" : "Rodriquez",'+
             '                "FirstName" : "Roberto" }},'+
             '  { "Age" : 20,'+
             '    "Names" : { "LastName" : "Rodriquez",'+
             '                "FirstName" : "Maria" }}'+
             '  ]}');
  E:=D.FindPath('Children[1].Names.FirstName');
  Writeln(E.AsJSON);   
end.      

напечатает "Maria".

Код FPJSON не использует жестко закодированные имена классов при создании JSON: он использует различные функции CreateJSON для создания данных. Эти функции используют реестр классов, поэтому можно создавать потомков классов в блоке fpjson и использовать их для построения структур данных JSON. Функции GetJSONInstanceType и SetJSONInstanceType можно использовать для получения или задания классов, которые необходимо использовать. синтаксический анализатор по умолчанию, используемый GetJSON, также будет использовать эти функции.


Документация создана: 20-08-2019