Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Переключайте службы с помощью раскрывающегося списка Версия. Дополнительные сведения о навигации.
Область применения: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel
Интерпретирует string как значение JSON и возвращает значение типа dynamic. По возможности значение преобразуется в соответствующие типы данных. Для строгого анализа без преобразования типов данных используйте функции extract() или extract_json().
Лучше использовать функцию parse_json() над функцией extract_json(), если необходимо извлечь несколько элементов составного объекта JSON. Используйте dynamic() по возможности.
Устаревшие псевдонимы: parsejson(), toobject(), todynamic()
Синтаксис
parse_json(
Json)
Дополнительные сведения о соглашениях синтаксиса.
Параметры
| Имя (название) | Type | Обязательно | Описание |
|---|---|---|---|
| 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соответственно).
datatable(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}}'
]
| extend d = parse_json(context_custom_metrics)
| extend duration_value = d.duration.value, duration_min = d.duration.min
Выходные данные
| context_custom_metrics | d | duration_value | duration_min |
|---|---|---|---|
| {"duration":{"value":118.0,"count":5.0,"min":100.0,"max":150.0,"stdDev":0.0,"sampledValue":118.0,"sum":118.0}} | {"duration":{"value":118,"count":5,"min":100,"max":150,"stdDev":0,"sampledValue":118,"sum":118}} | 118 | 100 |
Синтаксический анализ вложенного JSON
Обычно используется строка JSON, описывающая контейнер свойств, в котором один из "слотов" является другой строкой JSON.
Например:
let d='{"a":123, "b":"{\\"c\\":456}"}';
print d
Выходные данные
| print_0 |
|---|
| {"a":123, "b":"{"c":456}"} |
В таких случаях нужно не только дважды вызывать parse_json, но и убедиться, что при втором вызове используется tostring. В противном случае второй вызов parse_json просто передает входные данные в выходной as-is, так как объявленный тип dynamic.
let d='{"a":123, "b":"{\\"c\\":456}"}';
print d_b_c=parse_json(tostring(parse_json(d).b)).c
Ouput
| d_b_c |
|---|
| 456 |