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 numérico que especifica o tipo de dados a ser definido (veja abaixo).
Tipo de dados retornado
texto
Originada na versão
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 |
Tipo de entrada do parâmetro |
Tipo de saída |
|
Texto do FileMaker |
String JSON (" ") |
|
Número do FileMaker |
Número JSON |
|
Objeto JSON |
Objeto JSON ( { } ) |
|
Matriz JSON |
Matriz JSON ( [ ] ) |
|
Valor do FileMaker ou valor booleano JSON |
Booleano JSON |
|
O tipo é ignorado |
JSON nulo |
|
Elemento JSON |
Elemento JSON (ou string JSON, se |
-
É possível especificar
type
usando a constante nomeado ou o valor numérico exibido entre parênteses, por exemplo,JSONString
ou 1, sem aspas.
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
como true ou false é feita da mesma forma que para o parâmetro teste
na Função If.
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 ]
)
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
Cria uma entrada, adiciona um elemento (um objeto JSON) usando a sintaxe "[+]"
e depois usa a sintaxe "[:]"
para referenciar esse elemento como o último elemento na matriz para adicionar outro par de chave-valor ao objeto.
JSONSetElement( "[]";
["[+].a", 5, JSONNumber] ;
["[:].b", 6, JSONNumber]
)
Retorna [{"a":5,"b":6}].
Exemplo 3
Adiciona um objeto JSON como um elemento de outro objeto JSON. Se a variável $$JSON estiver definida como
então
JSONFormatElements (
JSONSetElement ( $$JSON ; "b" ; "{ \"id\" : 14, \"lnk\" : 73 } " ;
JSONObject
)
)
retorna
Exemplo 4
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
}