БД документа 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
Надеюсь, это поможет вам.