Retorna um tipo ARRAY, MAP ou STRUCT com base na string JSON jsonStr e nas informações de schema.
Formato do comando
from_json(<jsonStr>, <schema>)
Descrição dos parâmetros
jsonStr: obrigatório. String JSON de entrada.
-
schema: obrigatório. A sintaxe deve corresponder aos tipos usados em instruções de criação de tabela. Exemplos:
array<bigint>,map<string, array<string>>oustruct<a:int, b:double,.NotaAs chaves do tipo STRUCT diferenciam maiúsculas de minúsculas. Além disso, o tipo STRUCT aceita a notação
a bigint, b double, equivalente astruct<a:bigint, b:double>.A tabela a seguir apresenta a correspondência entre os tipos de dados JSON e os tipos de dados do MaxCompute.
Tipo de dado JSON
Tipo de dado MaxCompute
OBJECT
STRUCT, MAP, STRING
ARRAY
ARRAY, STRING
NUMBER
TINYINT, SMALLINT, INT, BIGINT, FLOAT, DOUBLE, DECIMAL, STRING
BOOLEAN
BOOLEAN, STRING
STRING
STRING, CHAR, VARCHAR, BINARY, DATE, DATETIME
NULL
Todos os tipos
NotaPara os tipos OBJECT e ARRAY, a função tenta analisar o conteúdo da melhor forma possível e ignora tipos incompatíveis. Todos os tipos JSON podem ser convertidos para o tipo STRING do MaxCompute para facilitar o uso. Observe que não há garantia de precisão decimal para os tipos FLOAT, DOUBLE e DECIMAL. Se a precisão for essencial, utilize a versão anterior da função GET_JSON_OBJECT ou extraia os dados como STRING antes de convertê-los para o tipo numérico desejado.
Valor retornado
Retorna um valor do tipo ARRAY, MAP ou STRUCT.
Exemplos de FROM_JSON
-
Exemplo 1: Converter uma string JSON específica para um formato definido. Comandos:
--返回{a:1,b:0.8}。 select from_json('{"a":1, "b":0.8}', 'a int, b double'); --返回{time:26/08/2015}。 select from_json('{"time":"26/08/2015"}', 'time string'); --返回{a:1, b:0.8, c:NULL}。 select from_json('{"a":1, "b":0.8}', 'a int, b double, c string'); --返回[1,2,3]。 select from_json('[1, 2, 3, "a"]', 'array<bigint>'); --返回{a:1, b:[1,2,3], c:{}, d:v}。 select from_json('{"a":1,"b":[1,2,3],"c":{},"d":"v"}', 'map<string, string>'); -
Exemplo 2: Obter o conjunto de todas as chaves de uma string JSON, simulando o comportamento de JSON_KEYS ao combinar as funções
map_keysefrom_json. Comando:--返回[a, b]。 select map_keys(from_json('{"a":1,"b":2}','map<string,string>'));
Funções relacionadas
A função FROM_JSON pertence à categoria de funções de tipos complexos ou funções de string.
Para mais funções de processamento de dados de tipos complexos (como ARRAY, MAP, STRUCT e JSON), consulte Funções de tipos complexos.
Para outras funções de busca e conversão de formato de strings, consulte Funções de string.