基本的な使用方法
以下はJSONデータを操作する際の基本的なコード例です。
var
Obj: ISuperObject;
begin
Obj := SO;
Obj.S['name'] := 'Onur YILDIZ';
Obj.B['vip'] := True;
with Obj.A['telephones'] do
begin
Add('000000000');
Add('111111111111');
end;
Obj.I['age'] := 24;
Obj.F['size'] := 1.72;
with Obj.A['addresses'].O[0] do
begin
S['address'] := 'blabla';
S['city'] := 'Antalya';
I['postcode'] := 7160;
end;
Obj.A['addresses'].O[1].S['address'] := 'blabla';
Obj.A['addresses'].O[1].S['city'] := 'Adana';
Obj.A['addresses'].O[1].I['postcode'] := 1170;
end;
スーパーエクスプレッション機能
複雑なJSON構造を扱うための特殊な構文を示します。
const
SampleJSON = '{ "items": { '+
'"1234567890": { '+
'"last_used": "2010-10-17T01:23:20",'+
'"created": "2010-10-17T01:23:20",'+
'"device": "iPhone 8s"'+
' },'+
'"index": 0, '+
'"data": {"index2": 1}, '+
'"list": [ '+
'{'+
'"last_used": "2010-10-17T01:23:20",'+
'"created": "2010-11-17T01:23:20",'+
'"device": "iPhone 8s",'+
'"numbers": [1,2,3]'+
' }, '+
'{'+
'"message": "hello"'+
' }'+
' ]'+
'}';
var
Obj: ISuperObject;
NewData: ISuperObject;
NewList: ISuperArray;
begin
Obj := SO(SampleJSON);
ShowMessage(Obj['items."1234567890"."last_used"'].AsString);
ShowMessage(Obj['list[index]."created"'].AsString);
ShowMessage(Obj['list[data.index2].message'].AsString);
Obj['list[0].numbers'].AsArray.Add('test1');
NewData := Obj['{a: list[index], b: list[data.index2].message, c: items."1234567890".device, d: 4, e: list[0].numbers[2], f: " :) "}'].AsObject;
NewList := Obj['[list[index], list[data.index2].message, data.index2, index, 1, "1", "test"]'].AsArray;
end;
データフィルタリング
var
DataObj: ISuperObject;
begin
DataObj := SO('{ people: [ '+
'{ '+
'name: "Sakar SHAKIR", '+
'gender: "M", '+
'height: 1.75 '+
' }, '+
'{ '+
'name: "Bulent ERSOY", '+
'gender: "F", '+
'height: 1.60 '+
' }, '+
'{ '+
'name: "Cicek ABBAS", '+
'gender: "M", '+
'height: 1.65 '+
' } '+
' ] '+
'}');
Memo1.Lines.Add(
DataObj.A['people'].Where(function(Item: IMember): Boolean
begin
with Item.AsObject do
Result := (S['gender'] = 'M') and (F['height'] > 1.60)
end).AsJSON
);
end;
ソート処理
var
Data: ISuperObject;
SortedList: ISuperArray;
begin
Data := SO('{b:1, a:2, d:4, c:2}');
ShowMessage(Data.AsJSON);
Data.Sort(function(Left, Right: IMember): Integer
begin
Result := CompareText(Left.Name, Right.Name);
end);
ShowMessage(Data.AsJSON);
SortedList := SA('[{id:3}, {id:4}, {id:2}, {id:1}]');
ShowMessage(SortedList.AsJSON);
SortedList.Sort(function(Left, Right: IMember): Integer
begin
Result := CompareValue(Left.AsObject.I['id'], Right.AsObject.I['id']);
end);
ShowMessage(SortedList.AsJSON);
end;
オブジェクトマーシャリング
type
TUser = class
private
FName: string;
FGender: string;
FHeight: Double;
public
property Name: string read FName write FName;
property Gender: string read FGender write FGender;
property Height: Double read FHeight write FHeight;
end;
var
User: TUser;
JSONStr: string;
begin
User := TUser.FromJSON('{"Name": "Onur YILDIZ", "Gender": "Male", "Height": 1.72}');
JSONStr := User.AsJSON;
end;
コレクション処理
type
TDataItem = record
ID: Integer;
Name: string;
end;
var
Items: TArray<TDataItem>;
JSONStr: string;
begin
Items := TJSON.Parse('[{"ID": 1, "Name": "Item1"}, {"ID": 2, "Name": "Item2"}]');
JSONStr := TJSON.Stringify(Items);
end;