JSONParse
Analisa o texto como dados JSON e mantém a representação JSON analisada na memória para você reutilizar em outras funções JSON.
Formato
JSONParse (json)
Parâmetros
json
- qualquer expressão de texto ou campo que contém um objeto ou matriz JSON.
Tipo de dados retornado
texto
Originada na versão
22.0
Descrição
Primeiro, JSONParse avalia a expressão de texto de entrada json
, depois analisa o texto JSON e armazena em cache uma representação binária na memória. Quando JSONParse define uma variável, parâmetro de script ou é usado em outros cálculos, essa representação binária fica disponível para outras funções JSON processarem os dados analisados.
JSONParse retorna o texto original inalterado se json
for válido ou retorna uma mensagem de erro se for inválido. Para um JSON inválido, JSONParse retorna uma mensagem de erro que começa com "?" seguido por informações sobre o erro de análise, semelhante a outras funções JSON.
Veja Otimização do desempenho do JSON.
Notas
-
Em operações JSON únicas, usar outras funções JSON diretamente no texto pode funcionar tão bem quanto usar o JSONParse primeiro.
-
Você pode usar a Função JSONParsedState para verificar se os dados JSON foram analisados com sucesso e são válidos.
Exemplo 1 - Análise básica de um objeto JSON simples
JSONParse ( "{ \"nome\": \"Alea\", \"idade\": 30, \"cidade\": \"Nova York\" }" )
returns { "nome": "Alea", "idade": 30, "cidade": "Nova York" }, que é a representação de texto inalterada dos dados JSON.
Se definido como uma variável $$Contact, a representação binária é armazenada em cache na memória e disponibilizada para cálculos que usam $$Contact.
Let ( [
$$Contact = JSONParse ( "{ \"nome\": \"Alea\", \"idade\": 30, \"cidade\": \"Nova York\" }" )
] ;
$$Contact
)
Se o JSON for inválido, JSONParse analisa os dados, mas retorna uma mensagem de erro. Por exemplo, se faltar a primeira vírgula no JSON acima, JSONParse retorna:
? * Linha 1, Coluna 18
Ausente ',' or '}' na declaração de objeto
Exemplo 2 - Análise de vários objetos JSON
Usa JSONParse para analisar o texto JSON em $JSONText1 e $JSONText2, depois recupera elementos das variáveis $ParsedJSON1 e $ParsedJSON2 sem fazer com que os dados JSON sejam analisados novamente.
Definir variável [ $ParsedJSON1 ; Valor: JSONParse ( $JSONText1 ) ]
Definir variável [ $ParsedJSON2 ; Valor: JSONParse ( $JSONText2 ) ]
Definir variável [ $name ; Valor: JSONGetElement ( $ParsedJSON1 ; "name" ) ]
Definir variável [ $id ; Valor: JSONGetElement ( $ParsedJSON2 ; "id" ) ]
Definir variável [ $category ; Valor: JSONGetElement ( $ParsedJSON1 ; "categoria" ) ]
Exemplo 3 - Verificação de erros e uso do JSON analisado em um loop
Demonstra a verificação de erros e mostra como usar JSONParse para melhorar o desempenho com o processamento de vários elementos dos mesmos dados JSON em um loop. $$JSON contém o texto JSON nos Exemplo de dados JSON. Depois que o script analisa $$JSON, ele verifica se o JSON analisado é válido (caso a Função JSONParsedState retorne um valor positivo). Se o JSON analisado for válido, o script percorre a matriz bakery.product
e obtém valores dos dados JSON já analisados.
Definir variável [ $ParsedJSON ; Valor: JSONParse ( $$JSON ) ]
Se [ JSONParsedState ( $ParsedJSON ) > 0 ]
# JSON é válido. Use o JSON analisado para várias operações.
Definir variável [ $ProductCount ; Valor: ValueCount ( JSONListKeys ( $ParsedJSON ; "bakery.product" ) ) ]
Definir variável [ $i ; Valor: 0 ]
Loop [ Limpar: Sempre ]
Definir variável [ $Product ; Valor: JSONGetElement ( $ParsedJSON ; "bakery.product[" & $i & "]" ) ]
Definir variável [ $ProductName ; Valor: JSONGetElement ( $Product ; "nome" ) ]
Definir variável [ $ProductPrice ; Valor: JSONGetElement ( $Product ; "preço" ) ]
# Processar dados do produto...
Definir variável [ $i ; Valor: $i + 1 ]
Exit Loop If [ $i ≥ $ProductCount ]
End Loop
Else
# Tratar do erro de análise de JSON
Mostrar caixa de diálogo personalizada [ "Erro JSON" ; $ParsedJSON ]
End If