找回密码
 立即注册

QQ登录

只需一步,快速开始

ZenosZeng 讲师达人认证 悬赏达人认证
超级版主   /  发表于:2023-12-26 14:32  /   查看:764  /  回复:0
本帖最后由 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 网络这个类型。
image.png490437621.png


然后将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
)




image.png806882324.png


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


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


JSON字符串列.dsc

1.28 KB, 下载次数: 13

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部