| 4D v18JSON Parse | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|  | 
    4D v18
 JSON Parse 
         | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| JSON Parse ( chaîneJSON {; type}{; *} ) -> Résultat | ||||||||
| Paramètre | Type | Description | ||||||
| chaîneJSON | Chaîne |   | Chaîne en JSON à analyser | |||||
| type | Entier long |   | Type dans lequel convertir les valeurs | |||||
| * | Opérateur |   | Ajouter la ligne et la position de chaque propriété si la valeur retournée est un objet | |||||
| Résultat | Objet, Varié |   | Valeurs extraites de la chaîne JSON | |||||
La commande JSON Parse analyse (parse) le contenu d’une chaîne formatée en JSON et en extrait des valeurs que vous pouvez stocker dans un champ ou une variable 4D. Cette commande désérialise des données JSON ; elle effectue l’action inverse de la commande JSON Stringify.
Passez dans chaîneJSON la chaîne au format JSON dont vous souhaitez analyser le contenu. Cette chaîne doit être correctement formatée, sinon une erreur de parsing est générée. JSON Parse peut donc être utilisée pour valider du JSON.
Note : Si vous utilisez des pointeurs, vous devez appeler la commande JSON Stringify avant JSON Parse.
Par défaut, si vous omettez le paramètre type, 4D tentera de convertir la valeur obtenue dans le type de la variable ou du champ utilisé pour stocker le résultat (s’il est défini). Sinon, 4D tentera de déduire le type. Vous pouvez également forcer l’interprétation du type en passant le paramètre type : passez une des constantes suivantes du thème Types champs et variables :
| Constante | Type | Valeur | 
| Est un booléen | Entier long | 6 | 
| Est un entier long | Entier long | 9 | 
| Est un numérique | Entier long | 1 | 
| Est un objet | Entier long | 38 | 
| Est un texte | Entier long | 2 | 
| Est une collection | Entier long | 42 | 
| Est une date | Entier long | 4 | 
| Est une heure | Entier long | 11 | 
Notes :
Si vous passez le paramètre optionnel * et si le paramètre chaîneJSON représente un objet, l'objet retourné contiend une propriété supplémentaire nommée __symbols qui fournit le chemin, l'emplacement de la ligne et la position dans la ligne de chaque propriété et sous-propriété de l'objet. Cette information est utile pour le débogage. La structure de la propriété __symbols est la suivante :
__symbols:{//description de l'objet
   myAtt.mySubAtt...:{ //chemin de la propriété
      line:10, //numéro de la ligne de la propriété
      offset:35 //position de la propriété à partir du début de la ligne
      }
   }Note : Le paramètre * est ignoré si la valeur retournée n'est pas de type objet.
Exemples de conversions simples :
 C_REEL($r)
 $r:=JSON Parse("42.17") //$r = 42,17 (réel)
 
 C_ENTIER LONG($el)
 $el:=JSON Parse("120.13";Est un entier long) //$el=120
 
 C_TEXTE($t)
 $t:=JSON Parse("\"Année 42\"";Est un texte) //$t="Année 42" (texte)
 
 C_OBJET($o)
 $o:=JSON Parse("{\"name\":\"jean\"}")
     // $o = {"name":"jean"} (objet 4D)
 
 C_BOOLEEN($b)
 $b:=JSON Parse("{\"manager\":true}";Est un booléen) //$b=vrai
 
 C_HEURE($h)
 $h:=JSON Parse("5120";Est une heure) //$h=01:25:20Exemples de conversions de données de type date :
 $test:=JSON Parse("\"1990-12-25T12:00:00Z\"")
     // $test=1990-12-25T12:00:000Z
 C_DATE($date;$date2;$date3)
 $date:=JSON Parse("\"2008-01-01T12:00:000Z\"";Est une date)
  //$date=01/01/08
 $date2:=JSON Parse("\"2017-07-13T23:00:00.000Z\"";Est une date)
  //$date2=14/07/17 (fuseau horaire Paris)
 FIXER PARAMETRE BASE(Dates dans objets;Type chaine sans fuseau horaire)
 $date3:=JSON Parse("\"2017-07-13T23:00:00.000Z\"";Est une date)
  //$date3=13/07/17Si le paramétrage courant de stockage de date est "type date", vous pouvez écrire :
 C_OBJET($o)
 C_TEXTE($json)
 C_DATE($birthday)
 
 $json:="{\"name\":\"Marcus\",\"birthday\":\"2017-10-16\"}"
 $o:=JSON Parse($json)
 $birthday:=$o.birthday
  //$birthday=16/10/17Note : Pour plus d'informations sur ce paramétrage, reportez-vous à l'option "Utiliser le type date au lieu du format date ISO dans les objets" dans le Page Compatibilité.
Cet exemple montre l’utilisation conjointe des commandes JSON Stringify et JSON Parse :
 C_TEXTE($JSONContact)
 C_OBJET($Contact;$Contact2)
 $Contact:=Creer objet("name";"Monroe";"firstname";"Alan")
 
  // JSON Stringify : conversion d’un objet JSON en chaîne JSON
 $JSONContact:=JSON Stringify($Contact)
 
  // JSON Parse : conversion d’une chaîne JSON en nouvel objet
 $Contact2:=JSON Parse($JSONContact)Vous souhaitez créer une collection 4D à partir d'un tableau JSON :
 C_COLLECTION($myCol)
 $myCol:=JSON Parse("[\"Lundi\",10,\"Mardi\",11,\"Mercredi\",12,false]")Vous souhaitez analyser la chaîne suivante et obtenir le chemin et la position de chaque propriété :
{
    "alpha": 4552,
    "beta": [
        {
            "echo": 45,
            "delta": "text1" 
        },
        {
            "echo": 52,
            "golf": "text2" 
        }
    ]
}Vous pouvez écrire :
 C_OBJET($obInfo)
 $obInfo=JSON Parse("json_string";Est un objet;*) //* pour ajouter la propriété __symbols
  //dans l'objet $obInfo retournéL'objet $obInfo contient :
{alpha:4552,
beta:[{echo:45,delta:text1},{echo:52,golf:text2}],
__symbols:{alpha:{line:2,offset:4},
beta:{line:3,offset:4},
beta[0].echo:{line:5,offset:12},
beta[0].delta:{line:6,offset:12},
beta[1].echo:{line:9,offset:12},
beta[1].golf:{line:10,offset:12}}}
									JSON PARSE TABLEAU
									
									JSON Stringify
									
									JSON Valider
									
									Types champs et variables
									
	Produit :  4D
	Thème :  JSON
	Numéro :  
        1218
        
        
        
	Nom intl. :  JSON Parse
	Créé :  4D v14
	Modifié :  4D v16 R4
	Modifié :  4D v16 R6
JSON validator
	
	
	
	
	
	
	
	
	4D - Langage ( 4D v18)
	
	
	
	
	
 Ajouter un commentaire
Ajouter un commentaire