【问题标题】:Correct json formatting in ms sql server更正 ms sql server 中的 json 格式
【发布时间】:2019-10-01 11:28:41
【问题描述】:

我有下面的SQL表

user_id  product_1  product_2  product_3
123      Scissors   Stone      Paper

我编写了这段代码以将结果格式化为 JSON,但无法获得所需的格式。如果我将所有产品列命名为name,则 sql 返回错误 Use different names and aliases for each column in SELECT list.

Sql代码:

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

当前输出:

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

期望的输出:

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

【问题讨论】:

    标签: sql json sql-server sql-server-2016


    【解决方案1】:

    您可以尝试下一种方法:

    表:

    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')
    

    声明:

    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')
    

    结果:

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

    【讨论】:

      猜你喜欢
      • 2018-05-09
      • 2015-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多