Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
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 |
Is Boolean | Entier long | 6 |
Is collection | Entier long | 42 |
Is date | Entier long | 4 |
Is longint | Entier long | 9 |
Is object | Entier long | 38 |
Is real | Entier long | 1 |
Is text | Entier long | 2 |
Is time | 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_REAL($r)
$r:=JSON Parse("42.17") //$r = 42,17 (réel)
C_LONGINT($el)
$el:=JSON Parse("120.13";Is longint) //$el=120
C_TEXT($t)
$t:=JSON Parse("\"Année 42\"";Is text) //$t="Année 42" (texte)
C_OBJECT($o)
$o:=JSON Parse("{\"name\":\"jean\"}")
// $o = {"name":"jean"} (objet 4D)
C_BOOLEAN($b)
$b:=JSON Parse("{\"manager\":true}";Is Boolean) //$b=vrai
C_TIME($h)
$h:=JSON Parse("5120";Is time) //$h=01:25:20
Exemples 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\"";Is date)
//$date=01/01/08
$date2:=JSON Parse("\"2017-07-13T23:00:00.000Z\"";Is date)
//$date2=14/07/17 (fuseau horaire Paris)
SET DATABASE PARAMETER(Dates dans objets;String type without time zone)
$date3:=JSON Parse("\"2017-07-13T23:00:00.000Z\"";Is date)
//$date3=13/07/17
Si le paramétrage courant de stockage de date est "type date", vous pouvez écrire :
C_OBJECT($o)
C_TEXT($json)
C_DATE($birthday)
$json:="{\"name\":\"Marcus\",\"birthday\":\"2017-10-16\"}"
$o:=JSON Parse($json)
$birthday:=$o.birthday
//$birthday=16/10/17
Note : 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_TEXT($JSONContact)
C_OBJECT($Contact;$Contact2)
$Contact:=New object("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_OBJECT($obInfo)
$obInfo=JSON Parse("json_string";Is object;*) //* 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 ARRAY
JSON Stringify
JSON Validate
Types champs et variables
Produit : 4D
Thème : JSON
Numéro :
1218
Créé : 4D v14
Modifié : 4D v16 R4
Modifié : 4D v16 R6
JSON validator
4D - Langage ( 4D v20 R7)