SQL Server 解析Json(单层/多层)
一,单层Json数据取出
1.取出取出@JsonData字符串中的 __type,DocNo,OrderPriceTC,Organization_Code 字段
DECLARE @JsonData NVARCHAR(max)=''
SET @JsonData='[{
"__type":"CreateRcvFromPO_ReturnData:UFIDA.U9.Cust.XDS.ISV",
"DocNo":"RCV02204280003",
"ItemConsumeID":null,
"OrderPriceTC":0,
"Organization_Code":null,
"RcvRercordID":null
}]'
select * from openjson(@JsonData)
with(
id varchar(10) '$.__type',
Plies NVARCHAR(50) '$."DocNo"',
Createtime NVARCHAR(50) '$."OrderPriceTC"',
Organization_Code NVARCHAR(50) '$."Organization_Code"'
);
一,双层Json数据取出 / 多层数据取出
1.定义一个多层的Json
DECLARE @JsonData NVARCHAR(max)=''
--多个 嵌套Json
SET @JsonData='{
"d":{
"__type":"CreateRcvFromPO_ReturnData:UFIDA.U9.Cust.XDS.ISV",
"DocNo":"RCV02204280003",
"Organization_Code":null,
"RcvRercordID":null,
"ReturnRcvLineID":[
{
"__type":"CreateRcvFromPO_ReturnData.RcvLineID:#UFIDA.U9.Cust.XDS.ISV",
"rcvLineID":1002310281689864,
"wmsLineNo":"0001"
},
{
"__type":"CreateRcvFromPO_ReturnData.RcvLineID:#UFIDA.U9.Cust.XDS.ISV",
"rcvLineID":1002310281689866,
"wmsLineNo":"0002"
}
],
"Seiban":null,
"Seq":0,
"ShipQtyTUAmount":0
}
}'
2.第一层:d 第二层:d中的 DocNo,RcvRercordID,Seq,ReturnRcvLineID等字段, 第三层:ReturnRcvLineID 中的 __type,rcvLineID,wmsLineNo 等字段
3.获取第二层中的 DocNo 既然要获取到第二层 那么就先要获取到第一层的d 然后获取d下的DocNo 字段,那么就需要JSON_QUERY() 函数
--双层嵌套
SELECT *
FROM OPENJSON(JSON_QUERY(@JsonData,'$.d'))---获取到d层
WITH(
DocNo NVARCHAR(50) '$.DocNo', --d层下DocNo字段
OrderPriceTC NVARCHAR(50) '$.OrderPriceTC'--d层下OrderPriceTC字段
);
4.获取到第三层的 rcvLineID,wmsLineNo 字段 先使用函数JSON_QUERY() 先获取到d层 然后再嵌套一个 JSON_QUERY()函数 获取到 ReturnRcvLineID层
--三层嵌套
SELECT *
FROM OPENJSON(JSON_QUERY(JSON_QUERY(@JsonData,'$.d'),'$.ReturnRcvLineID'))--先获取到d 然后再获取到d下的 ReturnRcvLineID
WITH(
__type NVARCHAR(50) '$.__type', --获取ReturnRcvLineID 下的 __type字段
rcvLineID NVARCHAR(50) '$.rcvLineID', --获取ReturnRcvLineID 下的 rcvLineID字段
wmsLineNo NVARCHAR(50) '$.wmsLineNo' --获取ReturnRcvLineID 下的 wmsLineNo字段
);
最新文章
- [LeetCode] N-Queens II N皇后问题之二
- 【转载】.NET模拟POST登录并保持登录状态
- 前端 动态表单提交(post、put)
- ffmpeg-20160617-git-bin.7z ffmpeg-20160626-git-bin.7z
- POJ1637 Sightseeing tour(判定混合图欧拉回路)
- Qt中使用ActiveX(3篇)
- Redis Sentinel机制与用法
- Apache OFBiz 学习笔记 之 服务引擎 一
- WildFly 9.0.2+mod_cluster-1.3.1 集群配置
- Ajax第一课
- java Domj4读取xml文件加强训练案例
- PTA——出现次数最多的数
- Qt5.12.2开发Android环境搭建
- FFmpeg制作+x264+faac
- JustOj 1032: 习题6.7 完数
- web 前端安全问题
- POJ3273--Monthly Expense(Binary Search)
- asp.net将ppt文档转换成pdf
- MYC编译器源码之代码生成
- Android 开发工具类 05_Logcat 统一管理类