ZenosZeng 发表于 2023-12-26 14:32:26

查询Web API数据中的JSON字符串列

本帖最后由 ZenosZeng 于 2023-12-26 14:36 编辑

在使用JSON数据源的时候,有些属性的值可能是一个JSON字符串,但是我们需要将JSON字符串解析为JSON对象,进行后续的数据查询工作。



本文就介绍如何对JSON字符串进行查询操作,用到的示例JSON数据如下,其中contentjson属性的值是一个JSON字符串"{\"time\":\"2023-12-01\",\"PHZX\":\"1\"}",如果直接用JSONPath是无法解析的,那么就要用到Wyn提供的高级查询语法。

{
    "TimeStamp": 756812384571,
    "MethodName": "GetLedger",
    "Message": {
      "ErrorCode": 1,
      "Message": "获取数据成功"
    },
    "Result": [{
      "id": 57,
      "name": "",
      "type": "机组凝结水精处理台账",
      "unit": 1,
      "description": "",
      "creator_id": null,
      "creationtime": "2023-12-22T16:54:28.880858",
      "modification_id": null,
      "modificationtime": null,
      "contentjson": "{\"time\":\"2023-12-01\",\"PHZX\":\"1\"}",
      "rpt_date": "2023-12-01"
    }],
    "Code": 0,
    "OtherMsg": null,
    "Error": null
}






首先,在Wyn里面创建JSON数据源,为了测试方便我们就选择内嵌JSON了,在实际项目中你可以选择Web 网络这个类型。



然后将JSON粘贴到【数据源】这个输入框中,预查询类型选择【SQL语句(使用JSON函数)】,对应的SQL语句如下:

selecttmp.id, tmp.name,tmp.rpt_date, tmp1.time, tmp1.PHZX from unwindjson(@source, '$.Result') tmp
with (
id integer '$.id',
name varchar '$.name',
rpt_date datetime '$.rpt_date',
contentjson varchar
)
outer applyunwindjson(contentjson) tmp1
with (
time datetime '$.time',
PHZX integer
)







点击数据源设计器右小角的【下一步】,我们可以得到查询结构,如下:



你也可以下载以下数据源,直接导入Wyn中查看是有实现细节。
数据源下载:


页: [1]
查看完整版本: 查询Web API数据中的JSON字符串列