本帖最后由 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语句如下:
select tmp.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 apply unwindjson(contentjson) tmp1
with (
time datetime '$.time',
PHZX integer
)
点击数据源设计器右小角的【下一步】,我们可以得到查询结构,如下:
你也可以下载以下数据源,直接导入Wyn中查看是有实现细节。
数据源下载:
|
|