Retorna dados dos tipos ARRAY, MAP ou STRUCT com base na string JSON especificada em jsonStr e no formato de saída definido em schema.
Sintaxe
from_json(<jsonStr>, <schema>)
Parâmetros
jsonStr: obrigatório. A string JSON de entrada.
-
schema: obrigatório. O schema da string JSON. O valor deste parâmetro deve ter o mesmo formato da instrução de criação de tabela, como
array<bigint>,map<string, array<string>>oustruct<a:int, b:double,.NotaAs chaves em uma struct diferenciam maiúsculas de minúsculas. Especifique a struct no formato
a BIGINT, b DOUBLE, que equivale aSTRUCT<a:BIGINT, b:DOUBLE>.A tabela a seguir descreve os mapeamentos entre os tipos de dados JSON e os tipos de dados do MaxCompute.
Tipo de dados JSON
Tipo de dados do MaxCompute
OBJECT
STRUCT, MAP e STRING
ARRAY
ARRAY e STRING
NUMBER
TINYINT, SMALLINT, INT, BIGINT, FLOAT, DOUBLE, DECIMAL e STRING
BOOLEAN
BOOLEAN e STRING
STRING
STRING, CHAR, VARCHAR, BINARY, DATE e DATETIME
NULL
Todos os tipos
NotaO sistema analisa as strings JSON dos tipos OBJECT e ARRAY tanto quanto possível. Se o tipo de dados da string JSON não tiver mapeamento para nenhum tipo de dados do MaxCompute, o sistema omite a string. Para facilitar o uso, é possível converter todos os tipos de dados JSON para o tipo STRING, compatível com o MaxCompute. Ao converter uma string JSON para um valor dos tipos FLOAT, DOUBLE ou DECIMAL, não há garantia de precisão nas casas decimais. Recomendamos usar a função GET_JSON_OBJECT, ou converter a string JSON para o tipo STRING e, em seguida, converter o valor obtido para FLOAT, DOUBLE ou DECIMAL.
Valor de retorno
Retorna um valor do tipo ARRAY, MAP ou STRUCT.
FROM_JSON
-
Exemplo 1: Converta uma string JSON específica em um valor de um tipo de dados específico. Instruções de exemplo:
-- The return value is {a:1,b:0.8}. select from_json('{"a":1, "b":0.8}', 'a int, b double'); -- The return value is {time:26/08/2015}. select from_json('{"time":"26/08/2015"}', 'time string'); -- The return value is {a:1, b:0.8, c:NULL}. select from_json('{"a":1, "b":0.8}', 'a int, b double, c string'); -- The return value is [1,2,3]. select from_json('[1, 2, 3, "a"]', 'array<bigint>'); -- The return value is {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: Use as funções
map_keysefrom_jsonpara obter todas as chaves em uma string JSON. Use também JSON_KEYS para a mesma finalidade. Instruções de exemplo:-- The return value is [a, b]. select map_keys(from_json('{"a":1,"b":2}','map<string,string>'));
Funções relacionadas
FROM_JSON é uma função de tipo complexo ou uma função de string.
Para obter mais informações sobre as funções que processam dados de tipos complexos, como ARRAY, MAP, STRUCT e JSON, consulte Complex type functions.
Para obter mais informações sobre as funções de pesquisa e conversão de strings, consulte String functions.