user2846400
user2846400

Reputation:

XSuperObject Object Show

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

Answers (2)

Azamat  Mirvosiqov
Azamat Mirvosiqov

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

bummi
bummi

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

Related Questions