JSON_VALUE с объектом JSON с квадратными скобками - PullRequest
2 голосов
/ 17 марта 2020

У меня есть таблица с полем JSON, оканчивающимся квадратными скобками. Это в действительном формате JSON, подтвержденном https://jsonformatter.curiousconcept.com/

[
   {
      "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, и он с удовольствием работает, возвращая то, что я ожидаю от такой команды, как SELECT JSON_VALUE (Json,'$.billId').

Что может быть лучше для решения этой ситуации - есть ли переключатель, опция? для JSON_VALUE (который я упустил), который позволяет ему обрабатывать JSON объекты, отформатированные вышеописанным способом, или какой-то другой более элегантный способ справиться с этой ситуацией?

1 Ответ

2 голосов
/ 17 марта 2020

Квадратные скобки обозначают массив с одним элементом, поэтому вам нужно использовать синтаксис доступа к массиву для выбора первого (и единственного) элемента.

'$[0].billId'

Демо

...