Todos os produtos
Search
Central de documentação

MaxCompute:JSON_INSERT

Última atualização: Jun 26, 2026

Insere um valor JSON em uma posição específica de um documento JSON.

Formato do comando

JSON json_insert(JSON <input>, ARRAY STRING <path>, JSON <value>, BOOLEAN <insert_after>);

Descrição dos parâmetros

  • input: obrigatório. Conteúdo JSON a modificar. Este parâmetro aceita os tipos JSON ARRAY e JSON OBJECT.

  • path: obrigatório. Posição onde inserir o conteúdo JSON.

  • value: obrigatório. Conteúdo JSON a inserir.

  • insert_after: obrigatório.

    • Se o parâmetro input contiver um array e o valor especificado em path já existir, a posição de adição do valor seguirá estas regras:

      • true: insere o novo valor após a posição especificada.

      • false (valor padrão): insere o novo valor antes da posição especificada.

    • Nota

      Quando o parâmetro input contém um array, as regras de inserção de conteúdo JSON seguem a lógica abaixo. Considere n como o comprimento do array em input e m como a posição de inserção especificada:

      • Se m>=n, adiciona o valor value ao final do array.

      • Se m<-n, adiciona o valor value no início do array.

      • Se -n<=m<n, a posição de adição do valor value depende do valor de insert_after.

    • Caso o parâmetro input não contenha um array, insere o valor no final por padrão.

Valor de retorno

Retorna o JSON modificado.

Exemplos de uso

  • Exemplo 1: inserir um novo valor em uma posição específica.

    select json_insert(JSON'{"f1":1,"f2":{"t1":1,"t2":2}}', 
                       array("f2","t3"), 
                       JSON'3',
                       false
                      );

    Resultado:

    +-----+
    | _c0 |
    +-----+
    | {"f1":1,"f2":{"t1":1,"t2":2,"t3":3}} |
    +-----+
  • Exemplo 2: inserir dados antes de um valor específico em um array.

    select json_insert(JSON'{"f1":[0,1,2]}', array("f1","0"), JSON'10', false);

    Resultado:

    +-----+
    | _c0 |
    +-----+
    | {"f1":[10,0,1,2]} |
    +-----+
  • Exemplo 3: inserir dados após um valor específico em um array.

    select json_insert(JSON'{"f1":[0,1,2]}', array("f1","0"), JSON'10', true);

    Resultado:

    +-----+
    | _c0 |
    +-----+
    | {"f1":[0,10,1,2]} |
    +-----+
  • Exemplo 4: inserir um valor em um array quando a posição de inserção excede o comprimento do array. O valor é adicionado ao final.

    select json_insert(JSON'{"f1":[0,1,2]}', array("f1","4"), JSON'4', false);

    Resultado:

    +-----+
    | _c0 |
    +-----+
    | {"f1":[0,1,2,4]} |
    +-----+
  • Exemplo 5: inserir um valor em um array quando a posição de inserção é menor que o negativo do comprimento do array. O valor é adicionado no início.

    select json_insert(JSON'{"f1":[0,1,2]}', array("f1","-4"), JSON'4', false);

    Resultado:

    +-----+
    | _c0 |
    +-----+
    | {"f1":[4,0,1,2]} |
    +-----+
  • Exemplo 6: inserir um valor em um array quando a posição está entre o negativo do comprimento e o próprio comprimento (exclusive). A inserção ocorre na posição especificada.

    select json_insert(JSON'{"f1":[0,1,2]}', array("f1","1"), JSON'10', false);

    Resultado:

    +-----+
    | _c0 |
    +-----+
    | {"f1":[0,10,1,2]} |
    +-----+