Sdílet prostřednictvím


parse_json()

Platí pro: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft 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 stringa 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 typu dynamic , 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.0v 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