SQL Server:无需指定JSON键的JSON变量转XML通用方法
解决方案:将SQL Server中的JSON对象转为通用XML格式
你可以通过OPENJSON解析JSON为行集,再结合FOR XML语法实现通用转换,无需枚举JSON键:
declare @jsonVar nvarchar(max) = N'{"key1":"value1","key2":"value2"}'; -- 生成带root节点的XML SELECT [key] AS 'local-name()', value AS 'text()' FROM OPENJSON(@jsonVar) FOR XML PATH(''), ROOT('root'); -- 生成不带root节点的XML SELECT [key] AS 'local-name()', value AS 'text()' FROM OPENJSON(@jsonVar) FOR XML PATH('');
说明:
OPENJSON(@jsonVar)会自动将JSON对象拆解为包含key(键名)和value(对应值)的行集,适配任意键名变化。[key] AS 'local-name()'指定XML元素的名称为JSON的键,value AS 'text()'指定元素的文本内容为JSON的值。FOR XML PATH('')将每行数据转为独立的XML元素,ROOT('root')用于添加根节点,移除该参数即可得到无root节点的结果。
执行带root节点的语句后,输出结果与你期望的格式一致:
<root> <key1>value1</key1> <key2>value2</key2> </root>
内容的提问来源于stack exchange,提问作者mike_grinin
相关产品推荐
相关产品推荐

