parse_json()
Интерпретирует string
как значение JSON и возвращает значение типа dynamic
. По возможности значение преобразуется в соответствующие типы данных. Для строгого анализа без преобразования типов данных используйте функции extract() или extract_json().
Лучше использовать функцию parse_json() вместо функции extract_json(), если необходимо извлечь несколько элементов составного объекта JSON. По возможности используйте dynamic().
Устаревшие псевдонимы: parsejson(), toobject(), todynamic()
Синтаксис
parse_json(
json)
Дополнительные сведения о соглашениях о синтаксисе.
Параметры
Имя | Тип | Обязательно | Описание |
---|---|---|---|
json | string |
✔️ | Строка в виде значения в формате JSON или динамического контейнера свойств для анализа как JSON. |
Возвращаемое значение
Объект типа dynamic
, который определяется значением json:
- Если json имеет тип
dynamic
, его значение используется без изменений. - Если json имеет тип
string
и является правильно отформатированной строкой JSON, строка анализируется и возвращается значение. - Если json имеет тип
string
, но является неправильно отформатированной строкой JSON, возвращаемое значение является объектом типаdynamic
, который содержит исходное значениеstring
.
Пример
В следующем примере context_custom_metrics
представляет собой string
, который выглядит следующим образом.
{"duration":{"value":118.0,"count":5.0,"min":100.0,"max":150.0,"stdDev":0.0,"sampledValue":118.0,"sum":118.0}}
затем следующий запрос извлекает значение слота duration
в объекте , а затем извлекает два слота и duration.value
duration.min
(118.0
и 110.0
соответственно).
T
| extend d=parse_json(context_custom_metrics)
| extend duration_value=d.duration.value, duration_min=d["duration"]["min"]
Примечания
Обычно используется строка JSON, описывающая контейнер свойств, в котором один из "слотов" является другой строкой JSON.
Пример:
let d='{"a":123, "b":"{\\"c\\":456}"}';
print d
В таких случаях нужно не только дважды вызывать parse_json
, но и убедиться, что при втором вызове используется tostring
. В противном случае при втором вызове parse_json
входные данные будут переданы в вывод "как есть", поскольку его объявленным типом является dynamic
.
let d='{"a":123, "b":"{\\"c\\":456}"}';
print d_b_c=parse_json(tostring(parse_json(d).b)).c
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по