首页 > 解决方案 > 如何将作为 JSON AUTO 的 select .....from 输出的字符串转换为无需使用第三方工具 SSIS 即可读取的 JSON 格式文件

问题描述

嗨,我正在编写 SSIS 包以获取输出 Select a,b,c from CUST FOR JSON AUTO 但是我在单行中获取输出,例如

{"a":"摇滚","b":"纸","c":"剪刀"}, {"a":"摇滚","b":"纸","c":"剪刀" }, {"a":"Rock" ,"b":"paper" ,"c":"scissors"}....

但是我希望输出为

{ 
 "a":"Rock",
  "b":"paper",
  "c":"scissors"
 },
 
{ 
 "a":"Rock",
  "b":"paper",
  "c":"scissors"
 },
 
{ 
 "a":"Rock",
  "b":"paper",
  "c":"scissors"
 },

我的客户参数是 Json 文件将是大文件,他不想进行额外的格式化并且应该是可读的

标签: sqljsonssisssis-2016

解决方案


如果可以在 SSIS 中添加一个 javascript 组件,就可以做到。(我不确定如何在 SSIS 中做到这一点)。但这是你在 javascript 中的做法

我有办法完成这项工作,相当混乱,但你可以看看这是否符合你的目的

DECLARE @nl varchar(2) = char(13), @Json nvarchar(MAX) = (Select a,b,c from #CUST FOR JSON AUTO) 

Select @Json = Replace(@Json, '[{','[' + @nl + '{' + @nl) 
Select @Json = Replace(@Json, '{','{' + @nl) 
Select @Json = Replace(@Json, '","','",' + @nl + '"' ) 
Select @Json = Replace(@Json, '"},{','"' + @nl + '},' + @nl + @nl + '{' ) 
Select @Json = Replace(@Json, '"}]','"' + @nl + '}' + @nl + ']' + @nl + @nl) 

Select @Json as FormattedJSON

这是有更多改进的小提琴


推荐阅读