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
Selection to JSON
|
Selection to JSON ( laTable {; leChamp}{; leChamp2 ; ... ; leChampN}{; template}) -> Résultat | ||||||||
Paramètre | Type | Description | ||||||
laTable | Table |
![]() |
Table à sérialiser | |||||
leChamp | Champ |
![]() |
Champ(s) dont le contenu doit être sérialisé | |||||
template | Objet |
![]() |
Objet pour la sélection de libellés et de champs | |||||
Résultat | Texte |
![]() |
Chaîne contenant le tableau JSON sérialisé | |||||
La commande Selection to JSON retourne une chaîne qui contient un tableau JSON avec autant d'éléments qu'il y a d'enregistrements dans la sélection courante de laTable. Chaque élément du tableau est un objet JSON contenant les libellés et les valeurs des champs de la sélection.
Si vous passez uniquement le paramètre laTable, la commande inclut dans le tableau JSON les valeurs de tous les champs de la table exprimables en JSON. Les champs de type BLOB et image sont ignorés.
Si vous ne souhaitez pas inclure tous les champs de laTable, vous pouvez utiliser soit le paramètre leChamp soit le paramètre template :
Cette commande prend en charge les champs de type objet : les données des champs sont automatiquement converties au format JSON (les valeurs des attributs image sont converties en chaînes "[object Picture]"). A noter que l'instruction 4D suivante sera interprétée comme "produire du JSON à partir de toutes les valeurs de champObjet dans la sélection courante de la table" :
Selection to JSON([uneTable];champObjet)
Note : Après un appel à Selection to JSON, la sélection courante n'est pas modifiée mais l'enregistrement courant n'est plus chargé et il peut avoir changé (le dernier enregistrement de la sélection devient l'enregistrement courant). Après un Selection to JSON, utilisez les commandes LOAD RECORD ainsi que GOTO SELECTED RECORD (si nécessaire) si vous souhaitez utiliser les valeurs des champs de l'enregistrement courant d'origine.
Vous voulez créer une chaîne JSON représentant cette sélection :
1) Vous souhaitez inclure les valeurs de tous les champs de la table [Adhérents] :
$jsonString :=Selection to JSON([Adhérents])
// $jsonString = [{"Nom":"Durant","Prénom":"Marc","Adresse":"25 rue du
//parc","Code postal":"95000","Ville":"Pontoise"},{"Nom":"Smith",
//"Prénom":"John","Adresse":"24, rue Philibert-Delorme ","Code postal":
//"75017","Ville":"Paris"},{"Nom":"Auquart","Prénom":"Adémart",
//"Adresse":"37, quai de l´Iton","Code postal":"37100","Ville":"Tours"},...]
2) Vous souhaitez réduire la sélection et n’inclure que deux champs dans la chaîne JSON en utilisant la syntaxe basée sur les champs :
QUERY([Adhérents];[Adhérents]Nom="A@")
$jsonString :=Selection to JSON([Adhérents];[Adhérents]Nom;[Adhérents]Ville)
// $jsonString = [{"Nom":"Auquart","Ville":"Tours"},{"Nom":"Aubert","Ville":"Paris"}]
3) Vous souhaitez n’inclure qu’un champ dans la chaîne JSON et utiliser un autre libellé. Vous utilisez la syntaxe template :
C_OBJECT($template)
OB SET($template;"Membre";->[Adhérents]Nom) //libellé personnalisé et un seul champ
ALL RECORDS([Adhérents])
$jsonString :=Selection to JSON([Adhérents];$template)
// $jsonString = [{"Membre":"Durant"},{"Membre":"Smith"},{"Membre":"Auquart"},{"Membre":"Aubert"},{"Membre":"Lenuze"},{"Membre":"Pradel"}]
Vous utilisez la syntaxe avec template afin d'exporter des champs de différentes tables :
C_OBJECT($template)
C_TEXT($chaineJSON)
OB SET($template;"Nom";->[Emp]Nom)
OB SET($template;"Prénom";->[Emp]Prénom)
OB SET($template;"Société";->[Société]Nom) //libellé personnalisé sinon conflit avec le champ [Emp]Nom
ALL RECORDS([Emp])
SET FIELD RELATION([Emp]UUID_Societe;Automatic;Do not modify)
$chaineJSON:=Selection to JSON([Emp];$template)
SET FIELD RELATION([Emp]UUID_Societe;Structure configuration;Do not modify)
Produit : 4D
Thème : JSON
Numéro :
1234
Créé : 4D v14
Modifié : 4D v16 R4
4D - Langage ( 4D v20 R7)