json - 将 XML 属性转换为 json
问题描述
作为一个简化的示例,请考虑这个包含两个字段的表。一个是字符串,另一个是 XML。
SELECT TOP (1) [Source]
, OrderParameter
FROM [Rops].[dbo].[PreOrder]
- 来源="媒体转换"
- OrderParameter="<?xml version="1.0" encoding="utf-16"?>"
现在我想查询表并将结果作为 json,但也将 XML 一次性转换为 json。
SELECT TOP (1) [Source]
, OrderParameter
FROM [Rops].[dbo].[PreOrder]
for json path;
结果是
[{"Source":"MediaConversions","OrderParameter":"<ParameterList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3 .org/2001/XMLSchema" />"}]
但我希望将其转换为:
[{"Source":"MediaConversions","OrderParameter":{ "ParameterList": ["x": 1, "y": 10] } ]
如何添加“for json”以转换 xml?
SELECT TOP (1) [Source]
, select OrderParameter for json path????
FROM [Rops].[dbo].[PreOrder]
for json path;
解决方案
看起来您想要提取ParameterList
XML 中节点的内部文本。您可以.value
为此使用 XQuery:
SELECT TOP (1) [Source]
, OrderParameter = (
SELECT
x = x.PL.value('(x/text())[1]','int'),
y = x.PL.value('(y/text())[1]','int')
FROM (VALUES( CAST(OrderParameter AS xml) )) v(OrderParameter)
CROSS APPLY v.OrderParameter.nodes('ParameterList') x(PL)
FOR JSON PATH, ROOT('ParameterList')
)
FROM [Rops].[dbo].[PreOrder]
FOR JSON PATH;
推荐阅读
- amazon-s3 - 获取对 AWS S3 存储桶的 AJAX 请求的 CORS 错误
- python - 如何在进程运行时显示带有说明性文本的 QDialog 框
- docker - Kubernetes 仪表板无法访问节点,GUI 中断
- spring-cloud-stream - Micronaut 的 Spring Cloud Stream 替代方案
- c++ - 错误:- main.cpp:11:19:错误:push_back 行中没有匹配的调用函数
- delphi - 我不知道该怎么做 通过 Delphi 在 Google Calendar API 中插入日历
- python - SIGINT 在 python 中本质上是不可靠的吗?
- google-sheets - discord.py - 通过 ID 提及不显示名称
- android - 回收站视图不使用领域数据更新数据
- visual-studio-code - 最新更新后 vscode 甚至没有启动