【问题标题】:Add an element at the beginning of a JSON using JSON_MODIFY使用 JSON_MODIFY 在 JSON 开头添加一个元素
【发布时间】:2019-04-02 14:05:52
【问题描述】:

我正在尝试从下表构建 JSON

 name | flag 
------+------
 foo  | fail 
 bar  | pass 

使用查询,

DECLARE @JSONDATA nvarchar(MAX) = (SELECT [name], [flag]
FROM test
FOR JSON AUTO, ROOT('students'))
SET @JSONDATA = JSON_MODIFY(@JSONDATA, '$.class','10')

这里生成的JSON是

{
  "students": [
    {
      "name": "foo",
      "flag": "fail"
    },
    {
      "name": "bar",
      "flag": "pass"
    }
  ],
  "class": "10"
}

我需要 JSON 的第一个节点处的 class 元素。有什么办法,使用 JSON_MODIFY 吗?

Fiddle

【问题讨论】:

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


    【解决方案1】:

    无法通过修改强制序列。

    也许是另一种选择

    Select class=10
          ,students =  (SELECT [name], [flag] FROM test FOR JSON AUTO)
      For JSON path, without_array_wrapper 
    

    退货

    {
        "class": 10,
        "students": [{
            "name": "foo",
            "flag": "fail"
        }, {
            "name": "bar",
            "flag": "pass"
        }]
    }
    

    EDIT- 按照 GSerg 的建议更新了 SELECT

    【讨论】:

    • @an33sh。乐于助人。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 2010-11-18
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 2015-06-25
    相关资源
    最近更新 更多