var
jo,arry,bb: ISuperObject;
strSQL,sResult,stmp: string;
sZTBH: string;
arry1: TSuperArray;
begin
stmp := ' {"gqcpbh":[{"cpbh":"0101"},{"cpbh":"0602"}],"resmsg":"数据查询成功","resid":"0"}';
jo := SO(stmp);
bb := SO('{eee:seee,ooo:st}');
jo['a']:=SA([]);
jo.A['a'].Add(bb);
jo.A['a'].Add(so('{11:33}'));
Memo1.Lines.Add(jo.AsJSon(true,true));理论上得出:
{
"a": [
{
"eee": "seee",
"ooo": "st"
},
{
"11": 33
}
],
"gqcpbh": [
{
"cpbh": "0101"
},
{
"cpbh": "0602"
}
],
"resid": "0",
"resmsg": "数据查询成功"
}实际得出:
{
"gqcpbh":
{
"cpbh": "0101"
},
{
"cpbh": "0602"
},
"a":
{
"ooo": "st",
"eee": "seee"
},
{
"11": 33
},
"resmsg": "\u6570\u636e\u67e5\u8be2\u6210\u529f",
"resid": "0"
}问题:
1. 数组的中括号没有了;
2. 中文变成了编码;请高手解释一下,如何写才能得到理论结果?
jo,arry,bb: ISuperObject;
strSQL,sResult,stmp: string;
sZTBH: string;
arry1: TSuperArray;
begin
stmp := ' {"gqcpbh":[{"cpbh":"0101"},{"cpbh":"0602"}],"resmsg":"数据查询成功","resid":"0"}';
jo := SO(stmp);
bb := SO('{eee:seee,ooo:st}');
jo['a']:=SA([]);
jo.A['a'].Add(bb);
jo.A['a'].Add(so('{11:33}'));
Memo1.Lines.Add(jo.AsJSon(true,true));理论上得出:
{
"a": [
{
"eee": "seee",
"ooo": "st"
},
{
"11": 33
}
],
"gqcpbh": [
{
"cpbh": "0101"
},
{
"cpbh": "0602"
}
],
"resid": "0",
"resmsg": "数据查询成功"
}实际得出:
{
"gqcpbh":
{
"cpbh": "0101"
},
{
"cpbh": "0602"
},
"a":
{
"ooo": "st",
"eee": "seee"
},
{
"11": 33
},
"resmsg": "\u6570\u636e\u67e5\u8be2\u6210\u529f",
"resid": "0"
}问题:
1. 数组的中括号没有了;
2. 中文变成了编码;请高手解释一下,如何写才能得到理论结果?
乱码把AsJSon第二个参数设为False。
你说的没有问题是什么意思?那中括号还存在吗?应该是存在才对的,为什么转化后就不见了呢?
乱码是默认用unicode的问题,改第二个参数为FALSE就OK了。
你说的没有问题是什么意思?那中括号还存在吗?应该是存在才对的,为什么转化后就不见了呢?
乱码是默认用unicode的问题,改第二个参数为FALSE就OK了。中括号还在,格式是正常的,可以被正确识别出来,可能是你的superobject有问题,换个试试?
D7, SuperObject1.2版本执行正确的。