« Json fragment (tech) » : différence entre les versions
(Page créée avec « __NOTOC__ Un fragment JSon est un élément d'un document JSon qui peut être manipulé comme une variable. Exemple : <source lang="delphi"> //Procedure TestJson; var js... ») |
|||
| Ligne 36 : | Ligne 36 : | ||
then showMessage('ok') | then showMessage('ok') | ||
else showMessage('failed'); | else showMessage('failed'); | ||
end; | |||
</source> | |||
<source lang="delphi"> | |||
//Procedure TestJson1; | |||
var json1,json2:TJson; | |||
begin | |||
json1 := Tjson.Create('{}'); | |||
json1.meta.id := 1; | |||
json2 := TJson.Create('{}'); | |||
json2.bp.name := 'name'; | |||
json2.bp.version := '1'; | |||
json2.bp.addStruct('data','{...}'); | |||
showMessage(json2.AsString); | |||
json1.meta.addStruct('bp',json2.bp); | |||
showMessage(json1.AsString); | |||
json1.CopyToClipboard; | |||
end; | end; | ||
</source> | </source> | ||
Version du 18 septembre 2020 à 16:19
Un fragment JSon est un élément d'un document JSon qui peut être manipulé comme une variable.
Exemple :
<source lang="delphi"> //Procedure TestJson; var json:TJSon; va,v1,v2:variant; begin
json := TJson.Create(
'{"a":[{"e1":1,"e2":2,"e3":{"e31":"v31","e32":["e321","e322"]}}]}'
);
va := json.a[0];
v1 := json.a[0].e1;
v2 := va.e1;
if v1<>v2
then showMessage('failed')
else showMessage('Ok');
end; </source>
Opération sur un fragment
AddStruct
<source lang="delphi"> var json1,json2:TJSon; vs,v1,v2:variant; begin
json1 := TJson.Create('{}');
json1.AddStruct('b').c := 1;
v1 := json1.b.c;
if v1=1
then showMessage('ok')
else showMessage('failed');
end; </source>
<source lang="delphi"> //Procedure TestJson1; var json1,json2:TJson; begin
json1 := Tjson.Create('{}');
json1.meta.id := 1;
json2 := TJson.Create('{}');
json2.bp.name := 'name';
json2.bp.version := '1';
json2.bp.addStruct('data','{...}');
showMessage(json2.AsString);
json1.meta.addStruct('bp',json2.bp);
showMessage(json1.AsString);
json1.CopyToClipboard;
end; </source>
Clear (tableau)
<source lang="delphi"> //Procedure TestJson4; var json:TJSon; va,v1:variant; begin
json := TJson.Create('{}');
json.b[0].a[0].Values := '1';
va := json.b[0].a;
va.Clear(0);
if va.count=0
then showMessage('ok')
else showMessage('failed');
end; </source>
Assign
<source lang="delphi"> //Procedure TestJSon8; var json1,json2:TJSon; vb,v1:variant; begin
json1 := TJson.Create('{}');
json1.a.b := 1;
json1.a.AddStruct('b','{c:1}');
vb := json1.a.b;
if not vb.Exists('c') then
begin
showMessage('failed');
Exit;
end;
v1 := vb.c;
if (v1<>1) then
begin
showMessage('failed');
Exit;
end;
// replace content of b
vb.Assign('{d:2}');
if vb.Exists('c') then
begin
showMessage('failed');
Exit;
end;
if not vb.Exists('d') then
begin
showMessage('failed');
Exit;
end;
v1 := vb.d;
if (v1=2)
then showMessage('ok')
else showMessage('failed');
end; </source>
Merge
<source lang="delphi"> //Procedure TestJson9; var json1,json2:TJSon; vs,v1,v2:variant; begin
json1 := TJson.Create('{}');
json1.a.b.x := 1;
json1.a.b.Merge('{c:1}');
v1 := json1.a.b.c;
if v1=1
then showMessage('ok')
else showMessage('failed');
end; </source>
<source lang="delphi"> //Procedure TestJson9; var json1,json2:TJSon; vx,v1,v2:variant; begin
json1 := TJson.Create('{}');
json1.a.b.c := 1;
v1 := json1.a.b;
if not v1.Exists('c') then
begin
showMessage('failed (1)');
Exit;
end;
json2 := TJson.Create('{}');
json2.a.b.d := 1;
v2 := json2.a.b;
if not v2.Exists('d') then
begin
showMessage('failed (2)');
Exit;
end;
v1.merge(v2);
if not v1.Exists('d') then
begin
showMessage('failed (3)');
Exit;
end;
vx := json1.a.b.d;
if vx=1
then showMessage('ok')
else showMessage('failed (2)');
end; </source>