Delphi:JSON数组 [英] Delphi: JSON array

查看:355
本文介绍了Delphi:JSON数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

试图在Delphi中了解JSON。使用模块DBXJSON.pas。如何使用它来使这样一个数组:

 数组:[
{1:1_1, 1_2_1:1_2_2},
...,
]

  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);

,但得到这个:

  {
Array:[
{1:1_1},{1_2_1:1_2_2}
]
}

请帮忙!
谢谢!

解决方案

您上面发布的代码是不正确的。您已经创建了一个JSON数组,并尝试向该数组添加对元素。但是,不必将数组添加到数组中,您必须将 JSON对象添加到此数组,并且这些对象必须包含您的对。

这里是示例代码来解决您的问题:

 程序Project3; 

{$ APPTYPE CONSOLE}

使用
SysUtils,dbxjson;

var jsobj,jso:TJsonObject;
jsa:TJsonArray;
jsp:TJsonPair;
begin
try
//创建顶级对象
jsObj:= TJsonObject.Create();
//创建一个json数组
jsa:= TJsonArray.Create();
//将数组添加到对象
jsp:= TJSONPair.Create('Array',jsa);
jsObj.AddPair(jsp);

//将项目添加到数组
jso的_first_ elemet:= TJsonObject.Create();
//添加对象对
jso.AddPair(TJsonPair.Create('1','1_1'));
jso.AddPair(TJsonPair.Create('1_2_1','1_2_2'));
//将其放入数组
jsa.AddElement(jso);

//第二个元素
jso:= TJsonObject.Create();
//添加对象对
jso.AddPair(TJsonPair.Create('x','x_x'));
jso.AddPair(TJsonPair.Create('x_y_x','x_y_y'));
//将其放入数组
jsa.AddElement(jso);

writeln(jsObj.ToString);
readln;

除了
对于E:异常do
Writeln(E.ClassName,':',E.Message);
结束
结束。

而输出是

  {Array:[
{1:1_1,1_2_1:1_2_2},
{x:x_x,x_y_x :x_y_y}
]
}


Trying to understand the JSON in Delphi. Using the module "DBXJSON.pas". How to use it to make this such an array:

Array:[
        {"1":1_1,"1_2_1":1_2_2},
        ...,
   ]

Doing so:

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);

, but get this:

{
"Array":[
{"1":"1_1"},{"1_2_1":"1_2_2"}
]
}

Please help! Thanks!

解决方案

Code, wich you posted above, is not correct. You've created an JSON-Array and trying to add pair-elements to that array. But, instead of adding pairs to array you have to add JSON Objects to this array, and these objects have to contain your pairs.
here is an sample code to solve your problem:

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.

and output is

{"Array":[
     {"1":"1_1","1_2_1":"1_2_2"},
     {"x":"x_x","x_y_x":"x_y_y"}
  ]
}

这篇关于Delphi:JSON数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆