【问题标题】:All Values in json response including numeric values need to be in double quotesjson 响应中的所有值(包括数值)都需要用双引号引起来
【发布时间】:2018-09-14 08:02:20
【问题描述】:

我正在尝试使用 SQL Server 中的以下查询以 json 格式从表中检索数据,

Select * from TableA for json path, root( 'table 1')

我得到 json 响应,

{  
    "TableA":[  
        {  
            "Id":34562,
            "A Id":2,
            "Name":"ZDR"
        }
    ]
}

其中字段“ID”和“A Id”在数据库中声明为“int”

现在我需要这些值也应该显示在双引号内,有什么方法可以在 SQL Server 2016 本身中处理,以明确所有字段值,无论数据类型如何,都应该用双引号括起来,请务必完整!!!

就像上面的单个查询一样,我最终在存储过程中设置了 12 个查询,当我运行存储过程时,我将得到一个 json 响应,其中所有值都应该用双引号括起来。

【问题讨论】:

  • 您使用的是哪个DBMS? “SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加标签
  • 数字在 JSON 中不应包含在双引号中。
  • 我正在使用 microsoft SQL server 2016,实际上我目前的要求是每个字段值都应该用双引号括起来。
  • 为什么要生成非标准的JSON?
  • 在结构上实现统一,所有值都用双引号括起来。

标签: sql json tsql sql-server-2016


【解决方案1】:

没有“自动”的方式来做到这一点。您可以在 SELECT 语句中将您的数字列 CAST 转换为文字(varcharnvarchar):

Select CAST(Id as nvarchar(10)) AS Id,
       CAST([A Id], nvarchar(10)) AS "A ID", 
       [Name]
       from TableA for json path, root( 'table 1');

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2014-09-10
    • 2021-06-06
    • 2019-03-15
    • 2011-03-07
    • 1970-01-01
    • 2014-04-27
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多