Todos los productos
Search
Centro de documentos

MaxCompute:JSON_INSERT

Última actualización: Sep 03, 2026

Inserta un valor JSON en una posición específica de un documento JSON.

Formato del comando

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

Descripción de parámetros

  • input: obligatorio. Contenido JSON que se modificará. Los tipos admitidos para este parámetro son JSON ARRAY y JSON OBJECT.

  • path: obligatorio. Posición donde se insertará el contenido JSON.

  • value: obligatorio. Contenido JSON por insertar.

  • insert_after: obligatorio.

    • Si el parámetro input contiene un arreglo y ya existe un valor en la ruta especificada, la posición de inserción se determina así:

      • true: inserta el nuevo valor después de la posición indicada.

      • false (valor predeterminado): inserta el nuevo valor antes de la posición indicada.

    • Nota

      Cuando el parámetro input incluye un arreglo, las reglas de inserción del contenido JSON dependen de su longitud. Si n es la longitud del arreglo y m la posición de inserción especificada:

      • Si m>=n, el valor value se agrega al final del arreglo.

      • Si m<-n, el valor value se agrega al inicio del arreglo.

      • Si -n<=m<n, la posición donde se agrega value depende del valor de insert_after.

    • Si el parámetro input no contiene un arreglo, el valor se inserta al final de forma predeterminada.

Valor devuelto

El documento JSON modificado.

Ejemplos de uso

  • Ejemplo 1: Insertar un nuevo valor en una posición específica.

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

    El resultado es el siguiente.

    +-----+
    | _c0 |
    +-----+
    | {"f1":1,"f2":{"t1":1,"t2":2,"t3":3}} |
    +-----+
  • Ejemplo 2: Insertar datos antes de un valor específico en un arreglo.

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

    El resultado es el siguiente.

    +-----+
    | _c0 |
    +-----+
    | {"f1":[10,0,1,2]} |
    +-----+
  • Ejemplo 3: Insertar datos después de un valor específico en un arreglo.

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

    El resultado es el siguiente.

    +-----+
    | _c0 |
    +-----+
    | {"f1":[0,10,1,2]} |
    +-----+
  • Ejemplo 4: Insertar en un arreglo cuando la posición indicada supera la longitud del arreglo; el valor se agrega al final.

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

    El resultado es el siguiente.

    +-----+
    | _c0 |
    +-----+
    | {"f1":[0,1,2,4]} |
    +-----+
  • Ejemplo 5: Insertar en un arreglo cuando la posición indicada es menor que el negativo de la longitud del arreglo; el valor se agrega al inicio.

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

    El resultado es el siguiente.

    +-----+
    | _c0 |
    +-----+
    | {"f1":[4,0,1,2]} |
    +-----+
  • Ejemplo 6: Insertar en un arreglo cuando la posición se encuentra entre el negativo de la longitud y la longitud misma (exclusiva); el valor se inserta en la posición indicada.

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

    El resultado es el siguiente.

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