Reputation:
I have one line json type:
Rows : [{ scan : 12, find : 6, fImg : 2 }]
i am using xsuperobject.
i want to show Rows.scan
if it is not a object i can show like X['scan'];
i searched this page : https://code.google.com/p/x-superobject/source/browse/wiki/Sample.wiki
*Sample 2*
{{{
const
JSN = '{ '+
' "adresses": [ '+
' { '+
' "adress": "blabla", '+
' "city": "Antalya", '+
' "pc": 7160 '+
' },'+
' { '+
' "adress": "blabla", '+
' "city": "Adana", '+
' "pc": 1170 '+
' } '+
' ] '+
'}';
var
X, Obj: ISuperObject;
J: Integer;
begin
X := TSuperObject.Create(JSN);
with X.A['adresses'] do
for J := 0 to Lenght -1 do
begin
Obj := O[J];
Obj.First;
while not Obj.EoF do
begin
Memo1.Lines.Add( Obj.CurrentKey + ' = ' + VarToStr(Obj.CurrentValue.AsVariant));
Obj.Next;
end;
Memo1.Lines.Add('------');
end;
end;
}}}
*OR (Enumerator)*
{{{
var
X: ISuperObject;
AMember,
OMember: IMember;
begin
X := TSuperObject.Create(JSN);
for AMember in X.A['adresses'] do
begin
for OMember in AMember.AsObject do
Memo1.Lines.Add(OMember.Name + ' = ' + OMember.ToString);
Memo1.Lines.Add('------');
end;
}}}
*Output*
{{{
adress = blabla
city = Antalya
pc = 7160
------
adress = blabla
city = Adana
pc = 1170
}}}
------
He gave a this example, but this is a multiple. I have one line. How can i do it?
Upvotes: 0
Views: 995
Reputation: 715
procedure TForm4.Button1Click(Sender: TObject);
var
json: ISuperObject;
begin
json := SO('{"Rows":[{"scan":12,"find":6,"fImg":2}]}');
ShowMessage(json.A['Rows'].O[0].I['scan'].ToString());
end;
Upvotes: 1
Reputation: 27384
If your JSon is multilevel you iterate over the level you want to retrieve,here 'Rows'
ROW1= '{Rows : [{ scan : 12, find : 6, fImg : 2 }]}';
var
X: ISuperObject;
AMember,
OMember: IMember;
begin
X := TSuperObject.Create(ROW1);
for AMember in X.A['Rows'] do
begin
for OMember in AMember.AsObject do
Memo1.Lines.Add(OMember.Name + ' = ' + OMember.ToString);
Memo1.Lines.Add('------');
end;
end;
For a simple object you just iterate over then object itself
ROW2= '{ scan : 12, find : 6, fImg : 2 }';
var
X: ISuperObject;
AMember,
OMember: IMember;
begin
X := TSuperObject.Create(ROW2);
for OMember in X do
Memo1.Lines.Add(OMember.Name + ' = ' + OMember.ToString);
end;
Upvotes: 0