【问题标题】:JSON_VALUE with square-bracket terminated JSON objectJSON_VALUE 以方括号结尾的 JSON 对象
【发布时间】:2020-03-17 01:14:24
【问题描述】:

我有一个带有方括号终止的 JSON 字段的表。它采用由https://jsonformatter.curiousconcept.com/ 验证的有效 JSON 格式

[
   {
      "billId":"1111",
      "memberId":"2222",
      "patientId":"3333",
      "details":[
         {
            "itemNumber":"A.111",
            "quantity":1,
            "unitPrice":1.11,
            "priceList":null,
            "location":"2",
            "uom":"each"
         },
         {
            "itemNumber":"A.11",
            "quantity":1,
            "unitPrice":1.11,
            "priceList":null,
            "location":"2",
            "uom":"Each"
         }
      ]
   }
]

JSON_VALUE 函数似乎在解析这个拒绝与我合作的对象时遇到问题,直到我使用像 right(LEFT(JsonBody,len(JsonBody)-1),len(JsonBody)-2) as Json 这样非常粗略的东西删除了终止方括号,并且它很乐意从像 @987654324 这样的命令返回我期望的内容@。

处理这种情况的更好方法是什么 - 是否有一个开关,JSON_VALUE 的一个选项(我忽略了),它允许它处理以上述方式格式化的 JSON 对象或其他更优雅的处理方式遇到这种情况?

【问题讨论】:

    标签: sql-server sql-server-2016


    【解决方案1】:

    方括号表示具有单个元素的数组,因此您需要使用数组访问语法来选择第一个(也是唯一一个)元素。

    '$[0].billId'
    

    Demo

    【讨论】:

      猜你喜欢
      • 2017-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      • 2020-12-21
      相关资源
      最近更新 更多