JSON解析实例

下面是阿里云全国快递查询接口返回的数据格式,顶层对象包括的属性非常多,其属性showapi_res_body是一个嵌套对象,这个嵌套对象本身也有很多属性, 其中的data属性是一个对象数组,这个数组的每个成员包括time和context属性:

{
  "showapi_res_code": 0,
  "showapi_res_error": "",
  "showapi_res_body": {
    "mailNo": "929601675231",
    "update": 1488784549365,
    "updateStr": "2017-03-06 15:15:49",
    "ret_code": 0,
    "flag": true,
    "status": 4,
    "tel": "95338",
    "expSpellName": "shunfeng",
    "data": [
      {
        "time": "2017-03-03 08:42:59",
        "context": "
已签收,感谢使用顺丰,期待再次为您服务"
      },
      {
        "time": "2017-03-03 07:40:22",
        "context": "
正在派送途中,请您准备签收(派件人:李正国,电话:18907153726)"
      },
      {
        "time": "2017-03-03 06:08:45",
        "context": "
快件到达 【武汉硚口区复兴村营业点】"
      },
      {
        "time": "2017-03-03 04:48:26",
        "context": "
快件在【武汉吴家山集散中心】已装车,准备发往 【武汉硚口区复兴村营业点】"
      },
      {
        "time": "2017-03-03 00:07:27",
        "context": "
快件到达 【武汉吴家山集散中心】"
      },
      {
        "time": "2017-03-02 22:54:14",
        "context": "
快件在【武汉总集散中心】已装车,准备发往 【武汉吴家山集散中心】"
      },
      {
        "time": "2017-03-02 22:54:02",
        "context": "
快件到达 【武汉总集散中心】"
      },
      {
        "time": "2017-03-02 15:00:33",
        "context": "
快件在【深圳总集散中心】已装车,准备发往 【武汉总集散中心】"
      },
      {
        "time": "2017-03-02 14:47:39",
        "context": "
快件到达 【深圳总集散中心】"
      },
      {
        "time": "2017-03-02 10:24:37",
        "context": "
快件在【江门江海集散中心】已装车,准备发往下一站"
      },
      {
        "time": "2017-03-02 05:41:54",
        "context": "
快件到达 【江门江海集散中心】"
      },
      {
        "time": "2017-03-01 22:31:24",
        "context": "
快件在【湛江麻章集散中心】已装车,准备发往 【江门江海集散中心】"
      },
      {
        "time": "2017-03-01 22:24:37",
        "context": "
快件到达 【湛江麻章集散中心】"
      },
      {
        "time": "2017-03-01 20:02:01",
        "context": "
快件在【湛江市赤坎文保北村营业点】已装车,准备发往 【湛江麻章集散中心】"
      },
      {
        "time": "2017-03-01 19:49:28",
        "context": "
顺丰速运 已收取快件"
      }
    ],
    "expTextName": "
顺丰速运"
  }
}

首先将上面的JSON数据复制到剪贴版,然后在命令窗口执行下面的代码:

Dim jo As JObject = Jobject.Parse(ClipBoard.GetText)
If
jo("showapi_res_body")("data") IsNot Nothing Then
    For Each jt As JToken In jo("showapi_res_body")("data")
        Output.Show(jt("time").ToString & " | " & jt("context").ToString)
   
Next
End
If

可以得到解析结果:

2017-03-03 08:42:59 | 已签收,感谢使用顺丰,期待再次为您服务
2017-03-03 07:40:22 | 正在派送途中,请您准备签收(派件人:李正国,电话:18907153726)
2017-03-03 06:08:45 | 快件到达 【武汉硚口区复兴村营业点】
2017-03-03 04:48:26 | 快件在【武汉吴家山集散中心】已装车,准备发往 【武汉硚口区复兴村营业点】
2017-03-03 00:07:27 | 快件到达 【武汉吴家山集散中心】
2017-03-02 22:54:14 | 快件在【武汉总集散中心】已装车,准备发往 【武汉吴家山集散中心】
2017-03-02 22:54:02 | 快件到达 【武汉总集散中心】
2017-03-02 15:00:33 | 快件在【深圳总集散中心】已装车,准备发往 【武汉总集散中心】
2017-03-02 14:47:39 | 快件到达 【深圳总集散中心】
2017-03-02 10:24:37 | 快件在【江门江海集散中心】已装车,准备发往下一站
2017-03-02 05:41:54 | 快件到达 【江门江海集散中心】
2017-03-01 22:31:24 | 快件在【湛江麻章集散中心】已装车,准备发往 【江门江海集散中心】
2017-03-01 22:24:37 | 快件到达 【湛江麻章集散中心】
2017-03-01 20:02:01 | 快件在【湛江市赤坎文保北村营业点】已装车,准备发往 【湛江麻章集散中心】
2017-03-01 19:49:28 | 顺丰速运 已收取快件

可以看到,用JObject解析JSON数据是异常方便的。


本页地址:http://www.foxtable.com/mobilehelp/topics/0252.htm