parse_json()
Berlaku untuk: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Menafsirkan string
sebagai nilai JSON dan mengembalikan nilai sebagai dynamic
. Jika memungkinkan, nilai diubah menjadi jenis data yang relevan. Untuk penguraian ketat tanpa konversi jenis data, gunakan fungsi extract() atau extract_json().
Lebih baik menggunakan fungsi parse_json() melalui fungsi extract_json() ketika Anda perlu mengekstrak lebih dari satu elemen objek majemuk JSON. Gunakan dynamic() jika memungkinkan.
Alias yang tidak digunakan lagi: parsejson(), toobject(), todynamic()
Sintaks
parse_json(
json)
Pelajari selengkapnya tentang konvensi sintaksis.
Parameter
Nama | Tipe | Wajib | Deskripsi |
---|---|---|---|
json | string |
✔️ | String dalam bentuk nilai berformat JSON atau tas properti dinamis untuk mengurai sebagai JSON. |
Mengembalikan
Objek jenis dynamic
yang ditentukan oleh nilai json:
- Jika json adalah jenis
dynamic
, nilainya digunakan apa adanya. - Jika json adalah jenis
string
, dan merupakan string JSON yang diformat dengan benar, string diurai, dan nilai yang dihasilkan dikembalikan. - Jika json adalah jenis
string
, tetapi bukan string JSON yang diformat dengan benar, nilai yang dikembalikan adalah objek bertipedynamic
yang menyimpan nilaistring
asli.
Contoh
Dalam contoh berikut, saat context_custom_metrics
adalah string
yang terlihat seperti ini:
{"duration":{"value":118.0,"count":5.0,"min":100.0,"max":150.0,"stdDev":0.0,"sampledValue":118.0,"sum":118.0}}
kemudian kueri berikut mengambil nilai duration
slot dalam objek, dan dari itu kueri mengambil dua slot, duration.value
dan duration.min
(118.0
dan 110.0
, masing-masing).
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
Catatan
Adalah umum untuk memiliki string JSON yang menggambarkan bag properti tempat salah satu "slot" adalah string JSON lain.
Contohnya:
let d='{"a":123, "b":"{\\"c\\":456}"}';
print d
Dalam kasus seperti itu, tidak hanya perlu untuk memanggil parse_json
dua kali, tetapi juga untuk memastikan bahwa dalam panggilan kedua, tostring
digunakan. Jika tidak, panggilan kedua ke parse_json
akan meneruskan input ke output apa adanya, karena jenis yang dideklarasikan adalah dynamic
.
let d='{"a":123, "b":"{\\"c\\":456}"}';
print d_b_c=parse_json(tostring(parse_json(d).b)).c