Este es el sitio web histórico de la documentación de 4D. La documentación se está trasladando progresivamente a developer.4d.com

Inicio

 
4D v20 R7
JSON Stringify

JSON Stringify 


 

JSON Stringify ( valor {; *} ) -> Resultado 
Parámetro Tipo   Descripción
valor  Objeto, Mixed in Datos a convertir en cadena JSON
Operador in Mejorar el formato
Resultado  Texto in Cadena que contiene el texto JSON serializado

El comando JSON Stringify convierte el parámetro valor en una cadena JSON. Este comando realiza la acción opuesta del comando JSON Parse.

Pase los datos a serializar en valor. Se pueden expresar en forma escalar (cadena, número, fecha u hora) o vía un objeto 4D o una colección.

Nota: las fechas 4D se convertirán en formato "aaaa-mm-dd" o "AAAA-MM-DDThh:mm:sssZ" según la configuración actual de la fecha de la base (ver la opción "Utilizar el tipo fecha en lugar del formato fecha ISO en los objetos" en Página Compatibilidad).

En el caso de un objeto o una colección, puede incluir todo tipo de valores (ver el párrafo Tipos de datos JSON), respetando las siguientes reglas de JSON:

  • Los valores de tipo cadena deben ir entre comillas. Todos los caracteres Unicode pueden usarse excepto los caracteres especiales que deben ser precedidos por una barra oblicua invertida.
  • Números: intervalo ±10.421e±10
  • Booleano: cadenas "true " o " false"
  • Punteros a un campo, variable o array (el puntero se evalúa al momento del stringify)
  • Fecha: tipo texto en formato "aaaa-mm-dd" o "\"AAAA-MM-DDTHH:mm:ssZ"\", en función de los parámetros actuales de la base (ver arriba).
  • Hora: tipo real (número de segundos por defecto)
    Notas:
  • Los atributos imagen se convierten a la siguiente cadena: "[objeto Imagen]".
  • Los punteros a campos, variables o array son evaluados en el momento del stringify.
Puede pasar el parámetro opcional * con el fin de incluir caracteres con formato en la cadena resultante. Esta opción mejora la presentación de los datos JSON (pretty formatting).

Conversión de valores escalares:

 $vc:=JSON Stringify("Eureka!") // "Eureka!"
 $vel:=JSON Stringify(120) // "120"
 $vh:=JSON Stringify(?20:00:00?) // "72000000" segundos desde la media noche
 $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"

Conversión de una cadena que contiene caracteres especiales:

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

Ejemplos de serialización de un objeto 4D con y sin el 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}

La ventaja de este formato es clara cuando el JSON se muestra en un área web:

  • Formato estándar:
  • Formato mejorado:

Ejemplo utilizando un puntero en una variable:

 C_OBJECT($MyTestVar)
 C_TEXT($name ;$jsonstring )
 OB SET($MyTestVar;"name";->$name// definición del objeto
  // $MyTestVar= {"name":"->$name"}
 
 $jsonstring :=JSON Stringify($MyTestVar)
  // $jsonstring ="{"name":""}"
  //...
 
 $name:="Smith"
 $jsonstring :=JSON Stringify($MyTestVar)
  //$jsonstring = "{"name" : "Smith"}"

Serialización de un 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"}"

Serialización de un objeto 4D que contiene un valor fecha (zona horaria de París). La cadena resultante depende de la configuración actual de la fecha de la base.

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

  • Si la opción "Utilizar tipo fecha en lugar de formato fecha ISO en objetos" no está seleccionada:
    "name":"Smith",
    "birthday":"1975-10-21T22:00:00.000Z"
  • Si la opción "Utilizar tipo fecha en lugar de formato fecha ISO en objetos" está seleccionada:
    "name":"Smith",
    "birthday":"1975-10-22"

Nota: para obtener más información sobre esta configuración, consulte Página Compatibilidad.

Conversión de una colección (zona horaria de París). La cadena resultante depende de la configuración actual de la fecha de la base de datos.

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

  • Si la opción "Utilizar tipo fecha en lugar de formato fecha ISO en objetos" no está seleccionada:
    $myTxtCol="[33,"mike","2017-08-27T22:00:00.000Z",false]"
  • Si la opción "Utilizar tipo fecha en lugar de formato fecha ISO en objetos" está seleccionada:
    $myTxtCol="[33,"mike","2017-08-28",false]"

Nota: para más información sobre esta opción, consulte Página Compatibilidad.



Ver también 

JSON Parse
JSON Stringify array

 
PROPIEDADES 

Producto: 4D
Tema: JSON
Número 1217

This command can be run in preemptive processes

 
CONTENIDO DE LA PÁGINA 
 
HISTORIA 

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

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v20 R7)