Json格式示意图

 json视图工具:http://www.bejson.com/jsonviewernew/

 

一、Json格式化,(看到数组里面又有数组一下子疑问不是合格json):尾门地址查询:

=>=>=>

{
  "Addresses": [
    "广东省 中山市 火炬开发区 在伟盛路附近 距离顷九327米",
    "广东省 中山市 火炬开发区 在伟盛路附近 距离顷九327米"
  ],
  "Points": [
    {
      "x": 113.456021761023,
      "y": 22.5737174302826
    },
    {
      "x": 113.456021761023,
      "y": 22.5737174302826
    }
  ],
  "Places": [
    [
      "测试区域",
      "su"
    ],
    [
      "测试区域",
      "su"
    ]
  ]
}
View Code
procedure TForm10.btn1Click(Sender: TObject);
var
  Jsonstr: string;
  json: ISuperObject;
  jsonAddress, jsonPlaceArray, jsonplace: TSuperArray;
  i, j: Integer;
begin
  Jsonstr := '{"Addresses":["广东省 中山市 火炬开发区 在伟盛路附近 距离顷九327米","广东省' +
    '中山市 火炬开发区 在伟盛路附近 距离顷九327米"],"Points":[{"x":113.456021761023,"y":22.5737174302826},'
    + '{"x":113.456021761023,"y":22.5737174302826}],"Places":[["测试区域","su"],["测试区域","su"]]}';

  json := SO(Jsonstr);
  jsonAddress := json.A['Addresses']; // json.O['Addresses'].AsArray;
  jsonPlaceArray := json.O['Places'].AsArray;
  for i := 0 to jsonPlaceArray.Length - 1 do
  begin
    jsonplace := jsonPlaceArray.O[i].AsArray;
    for j := 0 to jsonplace.Length - 1 do
    begin
      mmo1.Lines.Add(jsonplace.S[j]);
    end;
  end;
end;
处理代码

二、空调检测json结果:

=>=>=>

 

=>

{
  "ACCResultList": [
    {
      "ACResultList": [
        {
          "ACOpenTime": "2015-12-22 10:15:16",
          "ACCloseTime": "2015-12-22 11:16:16"
        },
        {
          "ACOpenTime": "2015-12-22 13:15:16",
          "ACCloseTime": "2015-12-22 13:16:16"
        }
      ],
      "AnalyzeAccOpenTime": "2015-12-22 9:00:00",
      "AnalyzeAccCloseTime": "2015-12-22 14:00:00"
    },
    {
      "ACResultList": [
        {
          "ACOpenTime": "2015-12-22 17:15:16",
          "ACCloseTime": "2015-12-22 18:16:16"
        },
        {
          "ACOpenTime": "2015-12-22 18:25:16",
          "ACCloseTime": "2015-12-22 19:16:16"
        }
      ],
      "AnalyzeAccOpenTime": "2015-12-22 17:00:00",
      "AnalyzeAccCloseTime": "2015-12-22 20:00:00"
    }
  ],
  "AnalyzeCarStopStatusStartTime": "2015-12-22 9:00:00",
  "AnalyzeCarStopStatusEndTime": "2015-12-22 22:00:00",
  "CommNo": "232321",
  "AnalyzeCarSpeedLat": 2322112,
  "AnalyzeCarSpeedLon": 0
}
View Code
procedure TForm10.btn2Click(Sender: TObject);
var
  Jsonstr: String;
  ACCResultArray: TSuperArray;
  ACArray: TSuperArray;
  i, j: Integer;
  jsonNode:ISuperObject;
begin
//  Jsonstr :=
//    '{"ACCResultList":[{"ACResultList":[{"ACOpenTime":"2015-12-22 10:15:16","ACCloseTime":"2015-12-22 11:16:16"},'
//    +'{"ACOpenTime":"2015-12-22 13:15:16","ACCloseTime":"2015-12-22 13:16:16"}]"AnalyzeAccOpenTime":"2015-12-22'+
//    ' 9:00:00","AnalyzeAccCloseTime":"2015-12-22 14:00:00"},'
//    +'{"ACResultList":[{"ACOpenTime":"2015-12-22 17:15:16","ACCloseTime":"2015-12-22 18:16:16"},'
//    +'{"ACOpenTime":"2015-12-22 18:25:16","ACCloseTime":"2015-12-22 19:16:16"}],"AnalyzeAccOpenTime":"2015-12-22 '
//    +'17:00:00","AnalyzeAccCloseTime":"2015-12-22 20:00:00"}],"AnalyzeCarStopStatusStartTime":"2015-12-22'
//    +' 9:00:00","AnalyzeCarStopStatusEndTime":"2015-12-22 22:00:00","CommNo":"232321","AnalyzeCarSpeedLat":2322112,"AnalyzeCarSpeedLon":0}';
 //此处发现两个情况,如果json数据放在 Memo中有空格回车键,转成string 转成不了 json对象;删除空格键可以
  //2 string 拼接成一条也转成不了。如上屏蔽的拼接 不成功。
  jsonNode := SO(mmo1.Lines.CommaText);
    ACCResultArray := jsonNode.A['ACCResultList'];
  // 或者类似这样 jsonNode.O['ACCResultList'].AsArray;

  for i := 0 to ACCResultArray.Length - 1 do
  begin
    ACArray := ACCResultArray.O[i].A['ACResultList']; //这样也可以ACCResultArray.O[i].O['ACResultList'].AsArray;
    for j := 0 to ACArray.Length - 1 do
    begin
      mmo1.Lines.Add( ACArray.O[j].S['ACOpenTime']);
      mmo1.Lines.Add(ACArray.O[j].S['ACCloseTime']);
    end;
  end;
end;
测试代码

个人总结:数组[] 里面的并列对象不可以有名字(因为是并列的,有不同名字就不是同样的了);Json 最外面的{} 前不可以有名字(如 "A":{}是不允许的);对象{}里面的对象前都必须要有名字; 不知道是否有问题。

例子1测试页:http://121.12.249.239:35080/arcgis/rest/services/PlaceService/MapServer/exts/PlaceServiceSOE/GetAddressAndPlace?groupid=156&points=%5B%7Bx%3A113.456021761023%2C+y%3A22.5737174302826%7D%5D&f=html 

 

VS2008(Visual Studio 2008)是一个早期版本的Microsoft Visual Studio IDE,主要用于.NET Framework 3.5及之前版本的开发。Qt 4.7.2则是跨平台的C++应用程序开发框架。 在VS2008上直接将XML转换为JSON并不是内置功能,因为XML到JSON的转换通常需要外部库或者编写一些脚本来处理。你可以选择使用像RapidXML这样的XML解析库(它支持C++),然后结合第三方库如QJson(Qt的一个组件)或者JSON for Modern C++等将XML数据转换成JSON格式。 以下是简单步骤概述: 1. 首先,在项目中添加必要的库依赖,例如RapidXML和QJson库。 2. 使用RapidXML解析XML文件并创建一个内存中的DOM树结构。 3. 调用相关的库函数或手动编写转换逻辑,将XML节点映射到JSON对象或数组。 4. 将生成的JSON对象序列化成字符串。 下面是一个简单的例子(仅示意图): ```cpp #include <iostream> #include "rapidxml.hpp" #include "json/json.h" // 示例解析XML xml_document<> doc; doc.parse<0>(file("your_xml_file.xml").data()); // 示例创建JSON对象 json::value jobj; jobj["key"] = doc.first_node()->value(); // 序列化为JSON字符串 std::string jsonString = jobj.toStyledString(); ``` 请注意,这只是一个简化的流程,实际操作可能会更复杂,取决于XML和JSON的具体结构。此外,如果你正在寻找的是跨平台解决方案,使用Qt的话,你可以考虑Qt的QJsonDocument和QJsonSerializer工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值