2010-12-03 10 views

Antwort

13
uses 
    SysUtils, 
    DBXJSON; 

type 
    TProcessJSONString = TProc<TJSONString>; 

procedure DoJSONObject(o: TJSONObject; Process: TProcessJSONString); forward; 

procedure DoJSONArray(o: TJSONArray; Process: TProcessJSONString); 
var i: integer; 
    v: TJSONValue; 
begin 
    for i := 0 to o.Size - 1 do begin 
    v := o.Get(i); 
    if v is TJSONObject then 
     DoJSONObject(v as TJSONObject, Process); 
    end; 
end; 

procedure DoJSONObject(o: TJSONObject; Process: TProcessJSONString); 
var i: integer; 
    p: TJSONPair; 
begin 
    for i := 0 to o.Size - 1 do begin 
    p := o.Get(i); 
    Process(p.JsonString); 
    if p.JsonValue is TJSONObject then 
     DoJSONObject(p.JsonValue as TJSONObject, Process) 
    else if p.JsonValue is TJSONArray then 
     DoJSONArray(p.JsonValue as TJSONArray, Process) 
    else if p.JsonValue is TJSONString then 
     Process(p.JsonValue as TJSONString); 
    end; 
end; 

var o: TJSONObject; 
begin 
    o := TJSONObject.ParseJSONValue('{"data":{"results":[{"Branch":"ACCT590003"}]}}') as TJSONObject; 
    try 
    DoJSONObject(o, 
     procedure (o: TJSONString) 
     begin 
     WriteLn(o.ToString); 
     end 
    ); 
    finally 
    o.Free; 
    end; 
    ReadLn; 
end. 
1

TALdocument mit es ist einfach

AJsonDoc := TalJsonDocument.create; 
AjsonDoc.loadFromJsonString('{"data":{"results":[{"Branch":"ACCT590003"}]}}'); 
writeln(AjsonDoc.childnode['data']['result'][0]['Branch'].text); 
2

Mit SuperObject Bibliothek https://github.com/hgourvest/superobject/

var json: iSuperObject; 
    data: string; 

begin 
    json := SO('{"data":{"results":[{"Branch":"ACCT590003"}]}}'); // shorthand 
// or equal: JSON := TSuperObject.ParseString('{"data":{"results":[{"Branch":"ACCT590003"}]}}'); 

    data := json.S['data.results[0].Branch']; 

    WriteLn('Result is: ', data); 
end. 
1

diesen Code Versuchen Sie, es funktioniert gut

uses System.JSON; 

procedure _Parse_JSonValue; 
var 
    JSonObject:TJSonObject; 
    JSonValue:TJSonValue; 
    st:string; 
    Branch: string; 
Begin 
    st := '{"data":{"results":[{"Branch":"ACCT590003"}]}}'; 
    JSonObject := TJSonObject.Create; 
    JsonValue:=JSonObject.ParseJSONValue(st); 
    JsonValue:=(JsonValue as TJSONObject).Get('data').JSONValue; 
    JsonValue:=(JsonValue as TJSONObject).Get('results').JSONValue; 
    if (JSONValue is TJSONArray) then 
     Branch := ((JSONValue as TJSONArray).Items[0] as TJSonObject).Get('Branch').JSONValue.Value; 
    JSonObject.Free; 
End; 

Ast = ‚AC CT590003 '