parse_json()
Platí pro: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Interpretuje string
hodnotu JSON a vrátí hodnotu jako dynamic
. Pokud je to možné, hodnota se převede na relevantní datové typy. Pro striktní analýzu bez převodu datového typu použijte funkce extract() nebo extract_json().
Funkci parse_json() je lepší použít u funkce extract_json(), když potřebujete extrahovat více než jeden prvek složeného objektu JSON. Pokud je to možné, použijte dynamic().
Zastaralé aliasy: parsejson(), toobject(), todynamic()
Syntaxe
parse_json(
json)
Přečtěte si další informace o konvencích syntaxe.
Parametry
Název | Type | Požadováno | Popis |
---|---|---|---|
json | string |
✔️ | Řetězec ve formě hodnoty ve formátu JSON nebo balíčku dynamické vlastnosti, který se má analyzovat jako JSON. |
Návraty
Objekt typu dynamic
, který je určen hodnotou json:
- Pokud je json typu
dynamic
, použije se jeho hodnota tak, jak je. - Pokud je json typu
string
a je správně naformátovaný řetězec JSON, řetězec se parsuje a vytvoří se hodnota. - Pokud je json typu
string
, ale nejedná se o správně formátovaný řetězec JSON, vrácená hodnota je objekt typudynamic
, který obsahuje původnístring
hodnotu.
Příklad
V následujícím příkladu platí, že context_custom_metrics
pokud je to string
takto:
{"duration":{"value":118.0,"count":5.0,"min":100.0,"max":150.0,"stdDev":0.0,"sampledValue":118.0,"sum":118.0}}
potom následující dotaz načte hodnotu slotu duration
v objektu a z toho načte dva sloty a duration.value
duration.min
(118.0
a 110.0
v uvedeném pořadí).
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
Poznámky
Běžně se používá řetězec JSON popisující tašku vlastností, ve které je jeden z "slotů" dalším řetězcem JSON.
Příklad:
let d='{"a":123, "b":"{\\"c\\":456}"}';
print d
Vtakovýchch hovorech není v takových případech nutné volat parse_json
pouze dvakrát, ale také zajistit, tostring
aby se použilo druhé volání. V opačném případě druhé volání parse_json
bude pouze předávat vstup výstupu tak, jak je, protože jeho deklarovaný typ je dynamic
.
let d='{"a":123, "b":"{\\"c\\":456}"}';
print d_b_c=parse_json(tostring(parse_json(d).b)).c