找回密码
 立即注册

QQ登录

只需一步,快速开始

Felix.Li Wyn认证

超级版主

101

主题

2855

帖子

5390

积分

超级版主

Rank: 8Rank: 8

积分
5390

Wyn高级认证Wyn认证

Felix.Li Wyn认证
超级版主   /  发表于:2024-10-31 13:34  /   查看:168  /  回复:0

注:改帖子需要先了解jsonsql的基本语法:jsonsql
随着现在各种系统的越发成熟,大家其实都有自己的系统和数据提供接口。所以在对接使用wyn的时候,很多人都会直接接入API。而API的接入,就意味着对json结构的解析。众所周知,json结构体本身会因为业务场景的复杂和json-body的复杂,所以即使API接入后,不知道怎么转化成wyn使用的二维表。
那么今天就给大家分享一下除了json-path之外,json-sql怎么获取你的数据。

嵌套层级取父级key和子级value
首先看到这个名字其实就是很明显了,我们有时候会把一些信息放在json的key里面,用代码或许我们可以 Object可以取,但是这里很多人就头大了,那么就引入我们的jsonsql了。先看一下今天的示例数据:
  1. {
  2.     "companyA": [
  3.         {
  4.             "createTime": "2023-12-31",
  5.             "productInfo": "companyAInfo1",
  6.             "value": 50
  7.         },
  8.         {
  9.             "createTime": "2023-12-16",
  10.             "productInfo": "companyAInfo2",
  11.             "value": 23
  12.         },
  13.         {
  14.             "createTime": "2023-11-21",
  15.             "productInfo": "companyAInfo3",
  16.             "value": 46
  17.         }
  18.     ],
  19.     "companyB": [
  20.         {
  21.             "createTime": "2024-1-12",
  22.             "productInfo": "companyBInfo1",
  23.             "value": 232
  24.         },
  25.         {
  26.             "createTime": "2023-1-21",
  27.             "productInfo": "companyBInfo2",
  28.             "value": 43
  29.         }
  30.     ],
  31.     "companyC": [
  32.         {
  33.             "createTime": "2023-12-31",
  34.             "productInfo": "companyCInfo1",
  35.             "value": 88
  36.         }
  37.     ]
  38. }
复制代码
我们有公司A,公司B等,然后每个body下面有自己的信息,我们不仅希望获取公司信息,还需要获取对应的公司名称,那么就需要一个关键点,json-sql的[key]就可以拿到json的key值,具体sql如下:
  1. select
  2.     outerJson.[key] as companyName,
  3.     innerJson.[productInfo] as productInfo,
  4.     innerJson.[createTime] as createTime
  5.     innerJson.[value] as EPI
  6. from UnwindJson(@source) outerJson
  7. cross apply UnwindJson(outerJson.Value) innerJson with (
  8.     [createTime] varchar,
  9.     [productInfo] varchar,
  10.     [value] Float
  11. )
复制代码


其中第一次查询的就是我们的最外层,我们取名 outerJson,我们需要的是外层的key.所以就是 outerJson.[key],然后在连接内部的数据,把每个字段列出来即可。
最终我们得到的结果即使如下:
image.png525242309.png

下面是这个Demo。赶紧尝试一下吧:
嵌套层级取父级key和子级value.zip (3.14 KB, 下载次数: 4)

0 个回复

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