Delphi: JSON array
试图理解 Delphi 中的 JSON。使用模块"DBXJSON.pas"。如何使用它来制作这样的数组:
1 2 3 4 | Array:[ {"1":1_1,"1_2_1":1_2_2}, ..., ] |
这样做:
1 2 3 4 5 6 | JSONObject:=TJSONObject.Create; JSONArray:=TJSONArray.Create(); ... JSONArray.AddElement(TJSONObject.Create(TJSONPair.Create('1','1_1'))); JSONArray.AddElement(TJSONObject.Create(TJSONPair.Create('1_2_1','1_2_2'))); JSONObject.AddPair('Array',JSONArray); |
,但得到这个:
1 2 3 4 5 | { "Array":[ {"1":"1_1"},{"1_2_1":"1_2_2"} ] } |
请帮忙!
谢谢!
您在上面发布的代码不正确。您已经创建了一个 JSON 数组并尝试将对元素添加到该数组中。但是,您必须将
这是解决您的问题的示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | program Project3; {$APPTYPE CONSOLE} uses SysUtils, dbxjson; var jsobj, jso : TJsonObject; jsa : TJsonArray; jsp : TJsonPair; begin try //create top-level object jsObj := TJsonObject.Create(); //create an json-array jsa := TJsonArray.Create(); //add array to object jsp := TJSONPair.Create('Array', jsa); jsObj.AddPair(jsp); //add items to the _first_ elemet of array jso := TJsonObject.Create(); //add object pairs jso.AddPair(TJsonPair.Create('1', '1_1')); jso.AddPair(TJsonPair.Create('1_2_1', '1_2_2')); //put it into array jsa.AddElement(jso); //second element jso := TJsonObject.Create(); //add object pairs jso.AddPair(TJsonPair.Create('x', 'x_x')); jso.AddPair(TJsonPair.Create('x_y_x', 'x_y_y')); //put it into array jsa.AddElement(jso); writeln(jsObj.ToString); readln; except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end. |
输出为
1 2 3 4 5 | {"Array":[ {"1":"1_1","1_2_1":"1_2_2"}, {"x":"x_x","x_y_x":"x_y_y"} ] } |
与@teran 相同的答案:
更改:
1 2 | JSONArray.AddElement(TJSONObject.Create(TJSONPair.Create('1','1_1'))); JSONArray.AddElement(TJSONObject.Create(TJSONPair.Create('1_2_1','1_2_2'))); |
到:
1 2 | JSONArray.AddElement(TJSONPair.Create('1','1_1')); JSONArray.AddElement(TJSONPair.Create('1_2_1','1_2_2')); |
干杯。