Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com

Accueil

 
4D v20 R7
JSON Stringify

JSON Stringify 


 

JSON Stringify ( valeur {; *} ) -> Résultat 
Paramètre Type   Description
valeur  Objet, Varié in Données à convertir en chaîne JSON
Opérateur in Améliorer la présentation
Résultat  Texte in Chaîne contenant le texte JSON sérialisé

La commande JSON Stringify convertit le paramètre valeur en une chaîne JSON. Cette commande effectue l’action inverse de la commande JSON Parse.

Passez dans valeur les données à sérialiser. Elles peuvent être exprimées sous forme scalaire (chaîne, numérique, date ou heure) ou via un objet 4D ou une collection. 

Note : Les dates 4D seront converties au format "yyyy-mm-dd" ou "YYYY-MM-DDThh:mm:sssZ" en fonction du paramétrage courant de la base (voir l'option "Utiliser le type date au lieu du format date ISO dans les objets" dans la Page Compatibilité).

Dans le cas d’un objet ou d'une collection, vous pouvez inclure tout type de valeurs (cf. paragraphe Types de données JSON), en respectant les règles suivantes du JSON :

  • les valeurs de type chaîne doivent être encadrées de guillemets. Tous les caractères Unicode peuvent être utilisés à l’exception des caractères spéciaux, devant être précédés par une barre oblique inversée.
  • numérique : intervalle ±10.421e±10
  • booléen : chaîne "true" ou "false"
  • date : type texte au format "aaaa-mm-jj" ou "\"AAAA-MM-JJTHH:mm:ssZ"\", en fonction des paramètres courants de la base (voir ci-dessus)
  • heure : type réel (nombre de secondes par défaut)
  • pointeur vers un champ, une variable ou un tableau (le pointeur est évalué au moment du stringify)
    Notes :
    • Les attributs image sont convertis en chaîne "[object Picture]"
    • les pointeurs vers des champs, variables ou tableaux sont évalués au moment du stringify.

Vous pouvez passer le paramètre optionnel * afin d’inclure des caractères de formatage dans la chaîne résultante. Cette option permet d’améliorer la présentation des données JSON (pretty formatting).

Conversions de valeurs scalaires :

 $vc:=JSON Stringify("Saperlipopette") // "Saperlipopette"
 $vel:=JSON Stringify(120) // "120"
 
 $vh:=JSON Stringify(?20:00:00?) // "72000" secondes depuis minuit
 SET DATABASE PARAMETER(Heures dans objets;Heures en milliseconds)
 $vhms:=JSON Stringify(?20:00:00?) // "72000000" millisecondes depuis minuit
 
 $vd:=JSON Stringify(!28/08/2013!) //  "2013-08-27T22:00:000Z" (fuseau horaire Paris)
 SET DATABASE PARAMETER(Dates dans objets;String type without time zone)
 $vdd:=JSON Stringify(!28/08/2013!) // "2013-08-28T00:00:00.000Z"

Conversion d’une chaîne contenant des caractères spéciaux :

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

Exemples de sérialisation d’un objet 4D avec et sans le paramètre * :

 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}

L’intérêt de ce formatage apparaît clairement lorsque le JSON est représenté dans une zone Web :

  • Formatage standard :
  • Formatage amélioré :

Exemple utilisant un pointeur vers une variable :

 C_OBJECT($MaVarTest)
 C_TEXT($name ;$jsonstring )
 OB SET($MaVarTest;"name";->$name// définition de l’objet
     // $MaVarTest = {"name":"->$name"}
 
 $jsonstring :=JSON Stringify($MaVarTest)
     // $jsonstring ="{"name":""}"
     //...
 
 $name:="Smith"
 $jsonstring :=JSON Stringify($MaVarTest
     //$jsonstring = "{"name" : "Smith"}"

Sérialisation d’un objet 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"}"

Sérialisation d'un objet 4D contenant une valeur de date (Fuseau horaire de Paris). La chaîne résultante dépend du paramétrage courant de la base.

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

  • Si l'option "Utiliser le type date au lieu du format date ISO dans les objets" n'est pas cochée :
    "name":"Smith",
    "birthday":"1975-10-21T22:00:00.000Z"
  • Si l'option "Utiliser le type date au lieu du format date ISO dans les objets" est cochée :
    "name":"Smith",
    "birthday":"1975-10-22"

Note : Pour plus d'informations sur cette option, reportez-vous à la Page Compatibilité.

Conversion d'une collection (fuseau horaire Paris). La chaîne résultante dépend du paramétrage courant de la base.

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

  • Si l'option "Utiliser le type date au lieu du format date ISO dans les objets" n'est pas cochée :
    $myTxtCol="[33,"mike","2017-08-27T22:00:00.000Z",false]"
  • Si l'option "Utiliser le type date au lieu du format date ISO dans les objets" est cochée :
    $myTxtCol="[33,"mike","2017-08-28",false]"

Note : Pour plus d'informations sur cette option, reportez-vous à la Page Compatibilité.



Voir aussi  

JSON Parse
JSON Stringify array

 
PROPRIÉTÉS 

Produit : 4D
Thème : JSON
Numéro : 1217

Commande(s) éligible(s) à l'exécution dans un process préemptif

 
PAGE CONTENTS 
 
HISTORIQUE 

Créé : 4D v14
Modifié : 4D v16 R4
Modifié : 4D v16 R6

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v20 R7)