Referência > Referência de funções > Funções JSON > JSONSetElement
 

JSONSetElement

Adiciona ou modifica um elemento em dados JSON especificado por um nome de objeto, um índice de matriz ou um caminho.

Formato 

JSONSetElement(json ; chaveOuÍndiceOuCaminho ; valor ; tipo)

Parâmetros 

json - qualquer expressão de texto ou campo que contém um objeto ou matriz JSON.

chaveOuÍndiceOuCaminho - qualquer expressão de texto ou campo que especifica um nome de objeto (chave), um índice de matriz ou caminho JSON. Consulte Utilização das funções JSON.

valor - qualquer expressão ou campo que contém um número, texto ou dados JSON.

tipo - um valor nomeado que especifica o tipo de dados a ser definido (consulte a seguir).

Tipo de dados retornado 

texto

Originado em 

FileMaker Pro 16.0

Descrição 

Essa função retorna json com o valor definido em ChaveOuÍndiceOuCaminho. Se o parâmetro json estiver vazio (""), essa função adiciona valor a um objeto JSON (entre chaves { }), a menos que a primeira parte do parâmetro ChaveOuÍndiceOuCaminho comece com um caractere "[". Nesse caso, essa função adiciona valor a uma matriz JSON (entre colchetes [ ]).

Para o parâmetro tipo, use um dos valores a seguir. Quando valor for adicionado a json, o parâmetro tipo especifica se valor será convertido em um tipo JSON específico ou se valor será inserido sem alterar o tipo.

 

Parâmetro tipo1

Tipo de entrada do parâmetro valor

Tipo de saída

JSONString (1)

Texto do FileMaker

String JSON (" ")

JSONNumber (2)

Número do FileMaker

Número JSON

JSONObject (3)

Objeto JSON

Objeto JSON ( { } )

JSONArray (4)

Matriz JSON

Matriz JSON ( [ ] )

JSONBoolean (5)

Valor do FileMaker ou valor booleano JSON

Booleano JSON

JSONNull (6)

O tipo é ignorado

JSON nulo

JSONRaw (0)

Elemento JSON

Elemento JSON (ou string JSON, se valor não for um JSON válido)

1. É possível especificar tipo usando o valor nomeado ou o valor numérico exibido entre parênteses, por exemplo, JSONString ou 1.

Para JSONBoolean, se valor for true ou um número diferente de zero, ele será tratado como true; se valor for false ou zero, ele será tratado como false. Caso contrário, a determinação de valor ser true ou false é feita da mesma forma que o caso do parâmetro teste estar na Função If ou não.

Para JSONRaw, o analisador JSON processa valor para determinar o uso de uma sintaxe JSON válida. Se valor for um JSON válido, o resultado analisado será usado no valor retornado por essa função sem converter nenhum elemento para tipos de dados JSON. Todos os caracteres após o primeiro elemento JSON no valor são ignorados. Por exemplo, se valor for "4,2", somente "4" será inserido, porque a vírgula é o separador entre elementos na sintaxe JSON. Se valor não for um JSON valor, valor será convertido para uma string JSON no valor retornado.

Você pode definir múltiplos elementos fornecendo um conjunto adicional de parâmetros ChaveOuÍndiceOuCaminho, valor e tipo entre colchetes [ ] para cada elemento. A sintaxe a seguir define N elementos de uma vez:

JSONSetElement(json ;
   [ ChaveOuÍndiceOuCaminho1 ; valor1 ; tipo1 ] ;
   [ ChaveOuÍndiceOuCaminho2 ; valor2 ; tipo2 ] ;
   ...
   [ ChaveOuÍndiceOuCaminhoN ; valorN ; tipoN ]
)

Notas 

Esta função não é compatível com soluções em tempo de execução e retorna "?".

Exemplo 1 

Adiciona uma chave e seu valor à raiz de um objeto JSON.

JSONSetElement("{ \"a\" : 11 }" ; "b" ; 22.23 ; JSONNumber) retorna {"a":11,"b":22.23}.

Exemplo 2 

Adiciona um objeto JSON como um elemento de outro objeto JSON. Se a variável $$JSON estiver definida como

{
"a" : {
"id" : 12,
"lnk" : 34
}
}

então

JSONFormatElements(
   JSONSetElement($$JSON ; "b" ; "{ \"id\" : 14, \"lnk\" : 73 } " ;
      JSONObject
   )
)

retorna

{
"a" :
{
"id" : 12,
"lnk" : 34
},
"b" :
{
"id" : 14,
"lnk" : 73
}
}

Exemplo 3 

A partir dos Exemplo de dados JSON armazenados na variável $$JSON, altera os valores das chaves "especial" e "estoque" no primeiro elemento de "produto" na matriz.

JSONFormatElements(
   JSONSetElement($$JSON ;
   [ "padaria.produto[0].especial" ; 0 ; JSONBoolean ] ;
   [ "padaria.produto[0].estoque" ; 0 ; JSONNumber ] ;
   )
)

retorna os mesmos dados de $$JSON, mas com o primeiro elemento da matriz "produto" alterado para

{
"categoria" : "Pães",
"id" : "FB1",
"nome" : "Rosquinhas",
"preço" : 1,99,
"especial" : false,
"estoque" : 0
}

Tópicos relacionados 

Referência de funções (lista de categorias)

Referência de funções (lista em ordem alfabética)

Sobre fórmulas

Sobre funções

Definição de campos de cálculo

Utilização de operadores em fórmulas

Utilização das funções JSON