简体   繁体   English

在 ms sql 服务器中正确的 json 格式

[英]Correct json formatting in ms sql server

I have the following SQL table我有以下 SQL 表

user_id  product_1  product_2  product_3
123      Scissors   Stone      Paper

I wrote this code to format result as JSON, but can't get it in the desired format.我编写此代码以将结果格式化为 JSON,但无法获得所需的格式。 If i name all product columns as name then sql returns an error Use different names and aliases for each column in SELECT list.如果我将所有产品列命名为name ,则 sql 返回错误Use different names and aliases for each column in SELECT list.

Sql code: Sql 代码:

select 
    product1 as 'Product1', 
    product2 as 'Product2', 
    product3 as 'Product3'
from Recommendations
where user_id = '123'
FOR JSON PATH, ROOT('Offers')

Current output:当前 output:

{"offers":[
   {"Product1": "Scissors", "Product2": "Stone", "Product3": "Paper"}
  ]
}

Desired output:所需的 output:

{"offers":[
   {"name": "Scissors"}, 
   {"name": "Stone"}, 
   {"name": "Paper"}
  ]
} 

You may try with the next approach:您可以尝试下一种方法:

Table:桌子:

CREATE TABLE Recommendations (
   user_id int,  
   product1 varchar(100),  
   product2 varchar(100),    
   product3 varchar(100)
)   
INSERT INTO Recommendations
   (user_id, product1, product2, product3)
VALUES   
   (123, 'Scissors', 'Stone', 'Paper')

Statement:陈述:

SELECT v.Name
FROM Recommendations r
CROSS APPLY (VALUES (r.product1), (r.product2), (r.product3)) v(Name)
WHERE user_id = '123'
FOR JSON PATH, ROOT('Offers')

Result:结果:

{"Offers":[{"Name":"Scissors"},{"Name":"Stone"},{"Name":"Paper"}]}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM