Запрос вложенных документов JSON в Cosmos

Я хотел бы включить этот набор результатов

[
  {
    "Document": {
      "JsonData": "{\"key\":\"value1\"}"
    }
  },
  {
    "Document": {
      "JsonData": "{\"key\":\"value2\"}"
    }
  }
]

в это

[
  {
    "key": "value1"
  },
  {
    "key": "value2"
  }
]

Я могу приблизиться, используя такой запрос, как

select value c.Document.JsonData from c

однако я получаю

[
  "{\"key\":\"value1\"}",
  "{\"key\":\"value2\"}"
]

Как я могу преобразовать каждое значение в отдельный фрагмент JSON с помощью SQL API?


person Mark A Johnson    schedule 19.06.2018    source источник
comment
Было бы действительно полезно, если бы вы отредактировали свой вопрос, чтобы показать, как выглядят ваши документы. Тем не менее: Cosmos DB не имеет встроенного синтаксического анализа JSON. Вам нужно будет преобразовать такие данные из вашего приложения (или хранимой процедуры). Или храните вложенный контент как фактические вложенные документы вместо строк JSON.   -  person David Makogon    schedule 20.06.2018


Ответы (1)


Как сказал выше Дэвид Макогон, нам необходимо преобразовать такие данные в нашем приложении. Мы можем сделать следующее:

        string data = "[{\"key\":\"value1\"},{\"key\":\"value2\"}]";
        List<Object> t = JsonConvert.DeserializeObject<List<Object>>(data);
        string jsonData = JsonConvert.SerializeObject(t);

Скриншот результата:

введите здесь описание изображения

person Lee Liu    schedule 20.06.2018