Todos os produtos
Search
Central de documentação

MaxCompute:JSON_INSERT

Última atualização: Sep 22, 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>);

Parâmetros

  • input: Obrigatório. O conteúdo JSON a ser modificado. Este parâmetro aceita os tipos de dados JSON ARRAY e JSON OBJECT.

  • path: Obrigatório. O caminho que especifica a posição de inserção do conteúdo JSON.

  • value: Obrigatório. O conteúdo JSON a ser inserido.

  • insert_after: Obrigatório.

    • Se o parâmetro de entrada contiver um array e o caminho apontar para um elemento existente, este parâmetro define a posição de inserção:

      • true: Insere o novo valor após o elemento especificado.

      • false (padrão): Insere o novo valor antes do elemento especificado.

    • Nota

      Se o parâmetro input for um array, as seguintes regras se aplicam ao inserir conteúdo JSON. Nessas regras, n representa o comprimento do array e m a posição de inserção especificada:

      • Se m >= n, o valor é adicionado ao final do array.

      • Se m < -n, o valor é adicionado ao início do array.

      • Se -n <= m < n, o parâmetro insert_after determina a posição do novo valor.

    • Caso o parâmetro de entrada não seja um array, o valor é inserido no final por padrão.

Valor retornado

O JSON modificado.

Exemplos

  • 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
                      );

    O resultado é o seguinte:

    +-----+
    | _c0 |
    +-----+
    | {"f1":1,"f2":{"t1":1,"t2":2,"t3":3}} |
    +-----+
  • Exemplo 2: Inserir um valor antes de um elemento em um array.

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

    O retorno será o seguinte:

    +-----+
    | _c0 |
    +-----+
    | {"f1":[10,0,1,2]} |
    +-----+
  • Exemplo 3: Inserir um valor após um elemento em um array.

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

    O resultado obtido é:

    +-----+
    | _c0 |
    +-----+
    | {"f1":[0,10,1,2]} |
    +-----+
  • Exemplo 4: Inserir um valor em um índice além do final de um array.

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

    A saída retornada é:

    +-----+
    | _c0 |
    +-----+
    | {"f1":[0,1,2,4]} |
    +-----+
  • Exemplo 5: Inserir um valor em um array JSON com um índice menor que o comprimento negativo do array posiciona o valor no início do array.

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

    O resultado gerado é o seguinte:

    +-----+
    | _c0 |
    +-----+
    | {"f1":[4,0,1,2]} |
    +-----+
  • Exemplo 6: É possível inserir um valor em um array em uma posição específica, desde que essa posição seja maior ou igual ao negativo do comprimento do array e menor que o seu comprimento.

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

    O retorno da operação é:

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