Estou tentando analisar uma string que contém uma quantidade X dos mesmos nós JSON, concatenados:
declare @jsonData varchar(max) =
'{
"data":{
"identity":1,
"elementValue": "300833b2ddd9014000000000"
},
"timestamp":"2023-04-25T00:56:57.891+0000"
}
{
"data":{
"identity":2,
"elementValue": "ad72120643eb1fb1867c005c"
},
"timestamp":"2023-04-25T00:56:57.898+000"
}'
Gostaria de analisar a string e retornar os valores dentro do nó 'data':
identidade | valorelemento |
---|---|
1 | 300833b2ddd9014000000000 |
2 | anúncio72120643eb1fb1867c005c |
Acredito que isso seja possível com OPENJSON(), mas estou com dificuldades com a sintaxe CROSS APPLY. Qualquer ajuda é bem-vinda! Obrigado!
Seu JSON é realmente inválido. Ele não tem colchetes de array ao redor e nenhuma vírgula entre objetos. Eu presumi que seus dados reais estão corretos.
Isso é bem simples: usar um único comando
OPENJSON
para fragmentar a matriz em valores e usar a sintaxe de caminho para especificar como recuperar cada propriedade.Mas se você realmente quiser usar
cross apply
ou tiver outros elementos de nível mais alto para recuperar, então você pode alimentar o resultado de umOPENJSON
no próximo. Você precisa especificaras json
para recuperar propriedades como objetos inteiros ou arrays sem analisá-los.db<>violino