Todos os produtos
Search
Central de documentação

MaxCompute:FROM_JSON

Última atualização: Jun 26, 2026

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>> ou struct<a:int, b:double, .

    Nota

    As 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 a struct<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

    Nota

    Para 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_keys e from_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.