Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com

Página Inicial

 
4D v20.6
JSON Stringify

JSON Stringify 


 

JSON Stringify ( valor {; *} ) -> Resultado 
Parâmetro Tipo   Descrição
valor  Objeto, Mixed in Dados a converter em cadeia JSON
Operador in Melhorar o formato
Resultado  Texto in Cadeia que contém o texto JSON serializado

O comando JSON Stringify converte o parâmetro valor em uma cadeia JSON. Este comando serializa os dados em JSON, realiza a ação inversa do comando JSON Parse.

Passe os dados a serializar em valor. Se podem expressar em forma escalar (cadeia, número, data ou hora) ou por meio de um objeto 4D ou coleção.

Nota: datas 4D são convertidas em formatos "aaaa-mm-dd" ou "AAAA-MM-DDThh:mm:sssZ" de acordo com a configuração atual de data do banco de dados (ver a opção "Use date type instead of ISO date format in objects" em Página Compatibilidade).

No caso de um objeto, que pode incluir todo tipo de valores (ver o parágrafo Tipos de dados JSON). O formato JSON deve respeitar as seguintes regras:

  • Os valores de tipo cadeia devem ir entre aspas. Todos os caracteres Unicode podem ser usados exceto os caracteres especiais que devem ser precedidos por uma barra oblíqua invertida.
  • Números: intervalo ±10.421e±10
  • Booleano: cadeias "true " ou " false"
  • Data: tipo de texto em formato "aaaa-mm-dd" ou "\"AAAA-MM-DDTHH:mm:ssZ"\" de acordo com a configuração atual de data no banco de dados (ver acima).
  • Hora: tipo real (por padrão número de segundos)

Notas:

  • Atributos de Imagem são convertidos à string: "[object Picture]".
  • Ponteiros ao campo, variável ou array são avaliados quando stringfied

Pode passar o parâmetro opcional * com o propósito de incluir caracteres com formato na cadeia resultante. Esta opção melhora a apresentação dos dados JSON (conhecida como pretty formatting).

Conversão de valores escalares:

 $vc:=JSON Stringify("Eureka!") // "Eureka!"
 $vel:=JSON Stringify(120) // "120"
 
 $vh:=JSON Stringify(?20:00:00?) // "72000" segundos desde a meia noite
 SET DATABASE PARAMETER(Times inside objects;Times in milliseconds)
 $vhms:=JSON Stringify(?20:00:00?) // "72000000" millissegundos desde a meia noite
 
 $vd:=JSON Stringify(!28/08/2013!) // "2013-08-27T22:00:00.000Z" (Paris timezone)
 SET DATABASE PARAMETER(Dates inside objects;String type without time zone)
 $vdd:=JSON Stringify(!28/08/2013!) // "2013-08-28T00:00:00.000Z"

Conversão de uma cadeia que contém caracteres especiais:

 $s:=JSON Stringify("{\"name\":\"john\"}")
  // $s="{\\"name\\":\\"john\\"}"
 $p:=JSON Parse($s)
  // $p={"name":"john"}

Exemplos de serialização de um objeto 4D com e sem o parâmetro *:

 C_TEXT($MyContact)
 C_TEXT($MyPContact)
 C_OBJECT($Contact;$Children)
 OB SET($Contact;"lastname";"Monroe";"firstname";"Alan")
 OB SET($Children;"firstname";"Jim";"age";"12")
 OB SET($Contact;"children";$Children)
 $MyContact:=JSON Stringify($Contact)
 $MyPContact:=JSON Stringify($Contact;*)
  //$MyContact= {"lastname":"Monroe","firstname":"Alan","children":{"firstname":"John","age":"12"}}
  //$MyPContact= {\n\t"lastname": "Monroe",\n\t"firstname": "Alan",\n\t"children": {\n\t\t"firstname": "John",\n\t\t"age": "12"\n\t}\n}

A vantagem deste formato é clara quando o JSON se mostra em uma área web:

  • Formato comum:
  • Formato melhorado:

Exemplo utilizando um ponteiro em uma variável:

 C_OBJECT($MyTestVar)
 C_TEXT($name ;$jsonstring )
 OB SET($MyTestVar;"name";->$name// definição do objeto
  // $MyTestVar= {"name":"->$name"}
 
 $jsonstring :=JSON Stringify($MyTestVar)
  // $jsonstring ="{"name":""}"
  //...
 
 $name:="Smith"
 $jsonstring :=JSON Stringify($MyTestVar)
  //$jsonstring = "{"name" : "Smith"}"

Serialização de um objeto 4D:

 C_TEXT($varjsonTextserialized)
 C_OBJECT($Contact)
 OB SET($Contact;"firstname";"Alan")
 OB SET($Contact;"lastname";"Monroe")
 OB SET($Contact;"age";40)
 OB SET($Contact;"phone";"[555-0100,555-0120]")
 
 $varjsonTextserialized:=JSON Stringify($Contact)
 
  // $varjsonTextserialized = "{"lastname":"Monroe","phone":"[555-0100,
  // 555-0120]","age":40,"firstname":"Alan"}"

Serialização de um objeto 4D contendo um valor de data (fuso horário de Paris). A string resultante depende das configurações atuais de data do banco de dados.

 C_TEXT($varjsonTextserialized)
 C_OBJECT($Contact)
 OB SET($Contact;"name";"Smith";"birthday";!22/10/1975!)
 $varjsonTextserialized:=JSON Stringify($Contact)

  • Se a opção "Use date type instead of ISO date format in objects"  não estiver marcada:
    "name":"Smith",
    "birthday":"1975-10-21T22:00:00.000Z"
  • Se a opção "Use date type instead of ISO date format in objects"  estiver marcada :
    "name":"Smith",
    "birthday":"1975-10-22"

Note: Para saber mais, veja Página Compatibilidade.

Conversão de uma coleção (fuso horário de Paris). A string resultante depende das configurações atuais de data no banco de dados.

 C_COLLECTION($myCol)
 C_TEXT($myTxtCol)
 $myCol:=New collection(33;"mike";!28/08/2017!;False)
 $myTxtCol:=JSON Stringify($myCol)

  • Se a opção "Use date type instead of ISO date format in objects" não estiver marcada:
    $myTxtCol="[33,"mike","2017-08-27T22:00:00.000Z",false]"
  • Se a opção "Use date type instead of ISO date format in objects"  estiver marcada:
    $myTxtCol="[33,"mike","2017-08-28",false]"

Nota: Para saber mais sobre essa opção, veja Página Compatibilidade.



Ver também 

JSON Parse
JSON Stringify array

 
PROPRIEDADES 

Produto: 4D
Tema: JSON
Número 1217

This command can be run in preemptive processes

 
CONTEÚDO DA PÁGINA 
 
HISTÓRIA 

Criado por: 4D v14
Modificado: 4D v16 R4
Modificado: 4D v16 R6

 
ARTICLE USAGE

Manual de linguagem 4D ( 4D v20)
Manual de linguagem 4D ( 4D v20.1)
Manual de linguagem 4D ( 4D v20.2)
Manual de linguagem 4D ( 4D v20.3)
Manual de linguagem 4D ( 4D v20.4)
Manual de linguagem 4D ( 4D v20.5)
Manual de linguagem 4D ( 4D v20.6)