БД документа SQL Api - невозможно запросить свойство json с именем 'value' и его значением является целое число

  {
    "id": "3d50809d-d631-4576-925a-7232d9ef9338",
    "TrackingId": "3d50809d-d631-4576-925a-7232d9ef9338",
    "records": [
      {
        "measurementTime": {
          "value": "2018-04-01 10:00:00.000",
          "unit": "datetime"
        },
        "systolic": {
          "value": 114,
          "unit": "mm(hg)"
        },
        "diastolic": {
          "value": 88,
          "unit": "mm(hg)"
        }
      }
    ]
  },
  {
    "id": "c5f3bd10-1959-4407-92cb-6d9548950f2c",
    "TrackingId": "c5f3bd10-1959-4407-92cb-6d9548950f2c",
    "records": [
      {
        "measurementTime": {
          "value": "2018-04-02 10:00:00.000",
          "unit": "datetime"
        },
        "systolic": {
          "value": 122,
          "unit": "mm(hg)"
        },
        "diastolic": {
          "value": 91,
          "unit": "mm(hg)"
        }
      }
    ]
  }

Я пытаюсь запросить документы в базе данных Azure Docuemnt, имеющие этот пример формата. (пожалуйста, не пытайтесь проверять JSON или имена свойств в запросе, я даю только лишенную версию, чтобы понять иерархию)

Я успешно запрашиваю некоторые свойства, но получаю сообщение об ошибке при попытке получить целочисленное значение по систолическому -> значению или диастолическому -> значению с помощью запроса, упомянутого ниже.

Запрос успеха:

SELECT 
c.id,
c.TrackingId,
c.records[0].measurementTime["value"]

Запрос отказа:

SELECT 
c.id,
c..TrackingId,
c.records[0].measurementTime["value"],
c.records[0].systolic["value"],
c.records[0].diastolic["value"]

использование ключевого слова ["value"] работает для measuremenTtime, но не работает для систолического или диастолического

Детали ошибки:

Сообщение: "Ошибка создания объекта, имя свойства" значение "указано более одного раза.

код:400

серьезность: ошибка

1 ответ

Решение

Кайлаш Равури, на самом деле ваша проблема не связана с именем поля или типом поля. На основании вашего запроса sql, ваши данные результата имеют 3 поля с именем 'value',это не разрешено. Вам просто нужно добавить псевдоним в 3 поля, и все будет хорошо.

SELECT 
c.id,
c.TrackingId,
c.records[0].measurementTime["value"] as measurementTimeValue,
c.records[0].systolic["value"] as systolicValue,
c.records[0].diastolic["value"] as diastolicValue FROM c

Надеюсь, это поможет вам.

Другие вопросы по тегам