parse_json()
Interpreta um string
como um valor JSON e devolve o valor como dynamic
. Se possível, o valor é convertido em tipos de dados relevantes. Para análise rigorosa sem conversão de tipo de dados, utilize funções extract() ou extract_json( ).
É melhor utilizar a função parse_json() sobre a função extract_json() quando precisar de extrair mais do que um elemento de um objeto composto JSON. Utilize dynamic() sempre que possível.
Aliases preteridos: parsejson(), toobject(), todynamic()
Syntax
parse_json(
json)
Saiba mais sobre as convenções de sintaxe.
Parâmetros
Nome | Tipo | Necessário | Descrição |
---|---|---|---|
json | string |
✔️ | A cadeia na forma de um valor formatado em JSON ou um saco depropriedades dinâmico para analisar como JSON. |
Devoluções
Um objeto do tipo dynamic
que é determinado pelo valor de json:
- Se json for do tipo
dynamic
, o respetivo valor é utilizado tal como está. - Se json for do tipo
string
e for uma cadeia JSON devidamente formatada, a cadeia é analisada e o valor produzido é devolvido. - Se json for do tipo
string
, mas não for uma cadeia JSON corretamente formatada, o valor devolvido é um objeto do tipodynamic
que contém o valor originalstring
.
Exemplo
No exemplo seguinte, quando context_custom_metrics
é um string
aspeto semelhante ao seguinte:
{"duration":{"value":118.0,"count":5.0,"min":100.0,"max":150.0,"stdDev":0.0,"sampledValue":118.0,"sum":118.0}}
em seguida, a consulta seguinte obtém o valor do duration
bloco no objeto e, a partir daí, obtém dois blocos, duration.value
e duration.min
(118.0
e 110.0
, respetivamente).
T
| extend d=parse_json(context_custom_metrics)
| extend duration_value=d.duration.value, duration_min=d["duration"]["min"]
Notas
É comum ter uma cadeia JSON que descreva um saco de propriedades no qual uma das "ranhuras" é outra cadeia JSON.
Por exemplo:
let d='{"a":123, "b":"{\\"c\\":456}"}';
print d
Nestes casos, não só é necessário invocar parse_json
duas vezes, mas também para garantir que na segunda chamada tostring
é utilizada. Caso contrário, a segunda chamada para parse_json
passará apenas a entrada para a saída tal como está, porque o tipo declarado é dynamic
.
let d='{"a":123, "b":"{\\"c\\":456}"}';
print d_b_c=parse_json(tostring(parse_json(d).b)).c
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários