Todos os produtos
Search
Central de documentação

MaxCompute:JSON_SET

Última atualização: Oct 19, 2026

A função JSON_SET substitui o valor em uma posição especificada no conteúdo JSON ou adiciona um valor nessa posição.

Sintaxe

JSON JSON_SET(JSON <input>, ARRAY<STRING> <path>, JSON <value>, BOOLEAN <create_if_missing>);

-- Standard example.
-- Returns [{"f1":4,"f2":null},2,null,3].
SELECT JSON_SET(JSON'[{"f1":1,"f2":null}, 2, null, 3]',
  ARRAY("0", "f1"), 
  JSON'4', 
  false);

Parâmetros

  • input: Obrigatório. Conteúdo JSON no qual um valor será substituído. Compatível com JSON OBJECT e JSON ARRAY.

  • path: Obrigatório. Posição do conteúdo JSON a ser substituída. O valor é do tipo ARRAY<STRING>. Cada elemento do array especifica o caminho de um nível de aninhamento no conteúdo JSON. Se o conteúdo JSON tiver n níveis de aninhamento, o array conterá n elementos. Caso o objeto JSON não seja aninhado, o primeiro valor será "0".

  • value: Obrigatório. Valor JSON usado na substituição.

  • create_if_missing: Obrigatório. Defina se o valor JSON deve ser adicionado ao input caso não exista nenhum valor na posição especificada. O valor é do tipo BOOLEAN. true indica que o valor será adicionado; false indica que não haverá adição.

Valor de retorno

O conteúdo JSON modificado.

Exemplos

  • Exemplo 1: Substituir o valor em uma posição especificada no conteúdo JSON.

    -- Returns [{"f1":[2,3,4],"f2":null},2,null,3].
    SELECT JSON_SET(JSON'[{"f1":1,"f2":null},2,null,3]',
      ARRAY("0","f1"), 
      JSON'[2,3,4]', 
      false);
     
    -- JSON content with a two-level nested array.
    -- Returns [{"f1":1,"f2":null},2,3,[4,6]].
    SELECT JSON_SET(JSON'[{"f1":1,"f2":null},2,3,[4,5]]',
      ARRAY("3","1"), 
      JSON'6', 
      false);
  • Exemplo 2: Substituir o valor em uma posição especificada no conteúdo JSON com create_if_missing definido como false. Se não houver valor na posição indicada, nenhuma substituição ou adição será realizada.

    -- Returns [{"f1":1,"f2":null},2,null,3].
    SELECT JSON_SET(JSON'[{"f1":1,"f2":null},2,null,3]', 
      ARRAY("0","f3"), 
      JSON'[2,3,4]', 
      false);
  • Exemplo 3: Substituir o valor em uma posição especificada no conteúdo JSON com create_if_missing definido como true. Caso não exista valor na posição especificada, o conteúdo JSON usado na substituição será adicionado ao input.

    -- Returns [{"f1":1,"f2":null,"f3":[2,3,4]},2,null,3].
    SELECT JSON_SET(JSON'[{"f1":1,"f2":null},2,null,3]', 
      ARRAY("0","f3"), 
      JSON'[2,3,4]', 
      true);
  • Exemplo 4: Se o input for um JSON OBJECT, o primeiro elemento de path deve ser uma chave válida.

    -- Returns {"f1":[2,3,4]}
    
    SELECT JSON_SET(JSON'{"f1":1}', 
     ARRAY("f1"), 
     JSON'[2,3,4]', 
     false);
    
    -- Returns {"f1":1}
    
    -- The JSON content is not an array. In this case, the path ["0"] refers to the field whose key is the string "0". The path does not exist, so no replacement is performed.
    
    SELECT JSON_SET(JSON'{"f1":1}', 
     ARRAY("0"), 
     JSON'[2,3,4]', 
     false);
    Nota

    Ao executar o comando em um MaxCompute client com use_instance_tunnel definido como true, os resultados exibidos no odpscmd e no Logview podem apresentar inconsistências. Utilize o resultado do Logview.

Funções relacionadas

JSON_SET é uma função JSON. Para obter mais informações sobre funções JSON, consulte JSON functions.