找回密码
 立即注册

QQ登录

只需一步,快速开始

@Martin.Zhang
中级会员   /  发表于:2021-12-20 11:51  /   查看:2691  /  回复:0
本帖最后由 James.Lv 于 2023-1-5 18:17 编辑


相信大家在使用wyn中json数据源时,觉得非常便捷。对于标准化json解析中也能得心应手的解决,但是在一些特定业务中,返回的json并不是wyn中理想的json模样。那么我们该如何去处理?

image.png701743163.png


先来个练习题,看看遇到这种json我们该如何下手呢?

image.png277621459.png

本来可以愉快的下班的,却遇到了这么个问题。其实json也很无辜,我也想成为你想要的样子,可是臣妾做不到啊。

image.png552433471.png


其实此类json我们在教程中已经做了比较详细的解释,但是如果对jsonpath解析掌握度不够的话,那么帮助手册有==无。大家认真看以下就是教程了,干货来了:

案例1:jsonA.json 文件内容:

{"metas":{"A":{"align":"left","attrKeys":"","cname":" "}},"__sys__":{"msg":"执行成功","status":0},"data":[["A","B"],["12688","5731.00"],["8920","32667.00"],["15903","31755.00"],["16477","5228.00"],["14140","29712.00"],["13391","19130.00"],["17487","26323.00"],["22135","31505.00"],["10635","28000.00"],["24291","19201.00"],["16959","25258.00"]],"__version__":"1.0","__blocks__":{}}

操作方式:

image.png792863769.png

select * from UnwindJson(@source,'$.data[1:]') tmp with(

A varchar '$.[0]',

B varchar '$.[1]'

)

解析结果:

image.png215444335.png




案例2:jsonB.json 文件内容

{"__tarAppEname__":"ww","__sys__":{"msg":"执行成功","status":0},"__version__":"2.0","urlAdress":"","__blocks__":{"result":{"meta":{"columns":[{"pos":0,"name":"BRANCH_CNAME","descName":" "},{"pos":1,"name":"DATE","descName":" "},{"pos":2,"name":"POST_CODE","descName":" "},{"pos":3,"name":"PERSON_NAME","descName":" "}]},"attr":{"offset":0,"limit":10},"rows":[["工厂","202008","BB","王刚"],["工厂","202008","AA","马冲"],["工厂","202008","CC","张飞"],["工厂","202008","DD","叶开"]]}}}

操作方式:

image.png284117125.png

select * from UnwindJson(@source,'$.__blocks__.result.rows

') tmp with(

BRANCH_CNAME varchar '$.[0]',

DATE varchar '$.[1]',

POST_CODE varchar '$.[2]',

PERSON_NAME varchar '$.[3]'

)

解析结果:
image.png863288879.png


在案例1中,我们看到 $.data[1:] 这么个语句,这个意思是,读取包括第一行到最后一行数据。


通过以上方式,我们就可以轻松的将json转换为我们想要的二维表格式。大家还有什么需要转换的json格式,可以共同讨论。

0 个回复

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