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. 中文变成了编码;请高手解释一下,如何写才能得到理论结果?

解决方案 »

  1.   

    说明:我用的 SuperObject 版本为 V1.5
      

  2.   

    用你的代码测试没有问题,不过我的SuperObject是1.2的,D7用不了高版本的,
    乱码把AsJSon第二个参数设为False。
      

  3.   

    Delphi高版本内置JSON库,可以试试
      

  4.   


    你说的没有问题是什么意思?那中括号还存在吗?应该是存在才对的,为什么转化后就不见了呢?
    乱码是默认用unicode的问题,改第二个参数为FALSE就OK了。
      

  5.   


    你说的没有问题是什么意思?那中括号还存在吗?应该是存在才对的,为什么转化后就不见了呢?
    乱码是默认用unicode的问题,改第二个参数为FALSE就OK了。中括号还在,格式是正常的,可以被正确识别出来,可能是你的superobject有问题,换个试试?
      

  6.   


    D7, SuperObject1.2版本执行正确的。