2015-10-06 17 views
5

Tôi đang sử dụng lkJSON-1,07 trong delphi 7, trong ví dụ của họViết một văn bản json

js := TlkJSONobject.Create; 
js.Add('namestring','namevalue'); 
// get the text of object 
s := TlkJSON.GenerateText(js); 
    writeln(s); 
writeln; 
writeln('more readable variant:'); 
// (ver 1.03+) generate readable text 
i := 0; 
s := GenerateReadableText(js,i); 
writeln(s); 

js.Free; 

nó tạo ra một văn bản như thế này: { "namestring": "namevalue" }

làm thế nào để viết một định dạng văn bản json như thế này:

{ 
    "Users": 
    { 
    "test_user1": 
    { 
     "time":1600, 
     "Points":4 
    } 
    "test_user2": 
    { 
     "time":1500, 
     "Points":3 
    } 
    } 
} 
+0

Tài liệu nói gì? –

+0

Bạn có thể làm rõ những gì bạn muốn khác nhau trong của bạn? Nó là từ điển lồng nhau? Ngoài ra, bạn không có dấu phẩy sau '' test_user1 ": {...}' mà bạn có thể sẽ cần. – SuperBiasedMan

Trả lời

3

trong khi sử dụng JSON Delphi Library bạn phải áp dụng phương pháp mà sau i Để n để thêm các yếu tố JSON con với cha mẹ:

function TlkJSONobject.Add(const aname: WideString; aobj: TlkJSONbase): Integer; 

Phương pháp này cho phép các tham số aobj được đính kèm như một đứa trẻ của một phần tử aname.

Đoạn code dưới đây cho phép để hoàn thành nhiệm vụ của bạn:

var 
    js0, js1, js2, js22: TlkJSONobject; 
    s: string; 
    i: Integer; 
begin 
    js2 := TlkJSONobject.Create; 
    js2.Add('time', '1600'); 
    js2.Add('Points', 4); 

    js22 := TlkJSONobject.Create; 
    js22.Add('time', '1500'); 
    js22.Add('Points', 3); 

    js1 := TlkJSONobject.Create; 
    js1.Add('test_user1', js2);   
    js1.Add('test_user2', js22); 

    js0 := TlkJSONobject.Create; 
    js0.Add('Users', js1); 

    i := 0; 
    s := GenerateReadableText(js0, i); 
    WriteLn(s); 

    js0.Free; 
end; 

Đây là một cách phù hợp hơn để viết mã trước đó - nhưng ít có thể đọc theo ý kiến ​​của tôi.

Ý tưởng ở đây là tạo các phần tử theo thứ tự mối quan hệ cha-con tự nhiên: trẻ được thêm vào phụ huynh đã chèn bằng cách sử dụng thuộc tính Field của đối tượng TlkJSONobject.

Vui lòng lưu ý rằng js.Field['some string'] giống với js['some string'] vì chỉ thị default được áp dụng cho thuộc tính Field.

var 
    js: TlkJSONobject; 
    s: string; 
    i: Integer; 
begin 
    js := TlkJSONobject.Create; 
    try 
    js.Add('Users', TlkJSONobject.Create); 

    with TlkJSONobject(js['Users']) do begin 
     Add('test_user1', TlkJSONobject.Create); 
     Add('test_user2', TlkJSONobject.Create); 
    end; 

    with TlkJSONobject(TlkJSONobject(js['Users'])['test_user1']) do begin 
     Add('time', '1600'); 
     Add('Points', 4); 
    end; 

    with TlkJSONobject(TlkJSONobject(js['Users'])['test_user2']) do begin 
     Add('time', '1500'); 
     Add('Points', 3); 
    end; 

    i := 0; 
    s := GenerateReadableText(js, i); 
    WriteLn(s); 

    finally 
    js.Free; 
    end; 
end; 

Chạy dự án, nó in:

{ 
    "Users":{ 
     "test_user1":{ 
      "time":"1600", 
      "Points":4 
     }, 
     "test_user2":{ 
      "time":"1500", 
      "Points":3 
     } 
    } 
} 

Trong một trường hợp thực tế, bạn rõ ràng sẽ xem xét để tạo ra các đối tượng và thêm những đứa trẻ sử dụng một số hướng dẫn vòng lặp.

Các vấn đề liên quan