delphi superobject 数组问题

drifer 2019-08-14 11:12:29
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. 中文变成了编码;

请高手解释一下,如何写才能得到理论结果?
...全文
631 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
无聊的猪 2019-08-16
  • 打赏
  • 举报
回复
引用 4 楼 drifer 的回复:
[quote=引用 2 楼 无聊的猪 的回复:] 用你的代码测试没有问题,不过我的SuperObject是1.2的,D7用不了高版本的, 乱码把AsJSon第二个参数设为False。
你说的没有问题是什么意思?那中括号还存在吗?应该是存在才对的,为什么转化后就不见了呢? 乱码是默认用unicode的问题,改第二个参数为FALSE就OK了。[/quote] 中括号还在,格式是正常的,可以被正确识别出来,可能是你的superobject有问题,换个试试?
tgbd 2019-08-16
  • 打赏
  • 举报
回复
引用 2 楼 无聊的猪 的回复:
用你的代码测试没有问题,不过我的SuperObject是1.2的,D7用不了高版本的, 乱码把AsJSon第二个参数设为False。
D7, SuperObject1.2版本执行正确的。
  • 打赏
  • 举报
回复
Delphi高版本内置JSON库,可以试试
drifer 2019-08-15
  • 打赏
  • 举报
回复
引用 2 楼 无聊的猪 的回复:
用你的代码测试没有问题,不过我的SuperObject是1.2的,D7用不了高版本的,
乱码把AsJSon第二个参数设为False。


你说的没有问题是什么意思?那中括号还存在吗?应该是存在才对的,为什么转化后就不见了呢?
乱码是默认用unicode的问题,改第二个参数为FALSE就OK了。
无聊的猪 2019-08-15
  • 打赏
  • 举报
回复
用你的代码测试没有问题,不过我的SuperObject是1.2的,D7用不了高版本的, 乱码把AsJSon第二个参数设为False。
drifer 2019-08-14
  • 打赏
  • 举报
回复
说明:我用的 SuperObject 版本为 V1.5

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧