Skip to main content
Skip table of contents

Outils de manipulation des données au format JSON


Les outils de manipulation de données au format json sont principalement basés sur la liste DIALOG WFSWListeJSON qui représentera une structure JSON. La fonction SW-OUTILS-JSON a pour but d’effectuer des opérations sur cette liste pour faciliter la création et l’extraction d’informations.

Les principes du format JSON

JSON (JavaScript Object Notation) est un format léger d'échange de données. Il est facile à lire ou à écrire pour des humains. C’est un format texte complètement indépendant de tout langage.

JSON se base deux structures : les objets et les tableaux (ou liste). Il y a une imbrication forte entre ces deux structures car chaque valeur (value) peut aussi bien être un type simple qu’un objet ou un tableau.

Voici un exemple de JSON :

{

"nom cours": "NF29",

"theme": "ingenierie documentaire",

"etudiants": [

{

"nom": "Norris",

"prenom": "Chuck",

"age": "73",

"pays": "USA",

"adresse": {

"code postal": 65000,

"ville": "Tarbes",

"rue": "18 Bd Jean Moulin"

},

"notes": [

19.5,

15,

13,

16.75

]

},

{

"nom": "Doe",

"prenom": "Jane",

"age": "45",

"pays": "Angleterre",

"adresse": {

"code Postal": 65290,

"ville": "Juillan",

"rue": "Téléport Bâtiment, 8 Pyrène Aéro Pôle"

},

"notes": [

9.5,

12,

13.5

]

},

{

"nom": "Ourson",

"prenom": "Winnie",

"age": "10",

"pays": "France",

"adresse": {},

"notes": []

}

]

}

Objet JSON

Un objet, qui est un ensemble de couples nom/valeur non ordonnés. Un objet commence par « { » et se termine « } ». Chaque nom est suivi de « : » et les couples nom/valeur sont séparés par « , ».

Tableau JSON (array)

Un tableau est une collection de valeurs ordonnées. Un tableau commence par « [ » et se termine par « ] ». Les valeurs sont séparées par « , ».

Une Valeur (value)

Une valeur peut être soit une chaîne de caractères entre guillemets, soit un nombre, soit true ou false ou null, soit un objet soit un tableau. Ces structures peuvent être imbriquées.

Élément racine

Il ne peut y avoir qu’un élément racine :

De type tableau : commençant par « [ »  et se terminant par « ] » ou de type objet : commençant par « { »   et se terminant par « } »

La liste de représentation

La liste de représentation JSON a pour but de décrire dans une liste toutes les informations d’une structure JSON pour pouvoir transformer un JSON => Liste ou une Liste => JSON sans perte d’information. Un ensemble d’informations additionnelles « redondantes » a été ajouté pour faciliter au maximum l’extraction d’une information en un minimum de parcours/recherche.

Description de la liste

Voici la description de la liste WFSWListeJSON:

NumOrdElement

Numéro d'ordre des éléments

CleLstRefAscendants

Liste chainée des références des ascendants

CleRefElement

Référence de l'élément

TypeElement

Type de l'élément (OBJET,TABLEAU,CARACTERE,NUMERIQUE,LOGIQUE,LONGCHAR)

ValeurCarElement

Valeur caractère de l'élément

ValeurNumElement

Valeur décimale de l'élément

ValeurLogElement

Valeur logique de l'élément

Cal_NivElement

Champ calculé : Niveau de l'élément

Cal_PathElement

Champ calculé : Chemin complet de l'élément

Cal_RefPere

Champ calculé : Référence du père de l'élément

Cal_TypePere

Champ calculé : Type du père de l'élément

Cal_PathPere

Champ calculé : Chemin complet du père de l'élément

Cal_RefGrandPere

Champ calculé : Référence du grand-père de l'élément

Cal_TypeGrandPere

Champ calculé : Type du grand-père de l'élément

Cal_PathGrandPere

Champ calculé : Chemin complet du grand-père de l'élément

Cal_RefArGrandPere

Champ calculé : Référence de l'arrière-grand-père de l'élément

Cal_TypeArGrandPere

Champ calculé : Type de l'arrière-grand-père de l'élément

Cal_PathArGrandPere

Champ calculé : Chemin complet de l'arrière-grand-père de l'élément

Les valeurs calculées

Les champs de la liste commençant par « Cal_ » sont des informations redondantes inutiles pour générer un JSON à partir de la liste. Elles ont pour objectif de faciliter les parcours d’extraction d’informations en DIALOG.

Ces informations sont alimentées par les actions de conversion de fichiers JSON en Liste ou de contenu JSON d’une requête http vers une liste. Dans les autres cas, ces champs sont vides et ils n’ont pas à être renseignés en création.

Structure arborescente et références d’éléments

Un élément sera identifié de façon unique avec les deux informations suivantes :

  • la liste chainée de toutes les références d’éléments ascendants jusqu’à la racine ;

  • la référence de l’élément courant.

Les références d’éléments sont uniques seulement sur un même parent.

Pour tous les éléments JSON du type CLE / VALEUR, la référence sera naturellement la valeur de la CLE.

Les éléments d’un tableau JSON n’ayant pas de référence, une référence du type « TAB<INDICE> » sera automatiquement générée par les fonctions de création d’éléments ou d’importation de JSON dans une liste.

Les valeurs de grande capacité (valeur fichier)

Dans un fichier JSON , la « valeur » d’un élément du type CLE / VALEUR peut être trop grande pour être stockée dans une variable. Il est par exemple possible de stocker le contenu d’un PDF (encodé en base 64) dans la valeur d’un élément.

Dans ce cas, aucun des champs « Valeur* » de la liste ne peut contenir la valeur. Pour les champs de ce type, il faudra utiliser les actions de la fonction DIALOG permettant d’écrire la valeur d’un élément dans un fichier.

Une autre action permet aussi d’alimenter une valeur de grande capacité à partir d’un fichier.

Exemple de transformation JSON➡️ Liste

Ce chapitre présente un exemple de JSON avec la liste WFSWListeJSON correspondante.

Voici le JSON :

{

"nom cours": "NF29",

"theme": "ingenieriedocumentaire",

"etudiants":[

{

"nom": "Norris",

"prenom": "Chuck",

"age": "73",

"pays": "USA",

"adresse":{

"code postal":65000,

"ville": "Tarbes",

"rue": "18 Bd Jean Moulin"

},

"notes":[

19.5,

15,

13,

16.75

]

},

{

"nom": "Doe",

"prenom": "Jane",

"age": "45",

"pays": "Angleterre",

"adresse":{

"code Postal":65290,

"ville": "Juillan",

"rue": "Téléport Bâtiment, 8 PyrèneAéroPôle"

},

"notes":[

9.5,

12,

13.5

]

},

{

"nom": "Ourson",

"prenom": "Winnie",

"age": "10",

"pays": "France",

"adresse":{},

"notes":[]

}

]

}

Voici la liste WFSWListeJSON sans les valeurs calculées:

NumOrdElement

CleLstRefAscendants

CleRefElement

TypeElement

ValeurCarElement

ValeurNumElement

1

$RACINE$

OBJET

0

2

$RACINE$

nom cours

CARACTERE

NF29

0

3

$RACINE$

theme

CARACTERE

Ingenierie documentaire

0

4

$RACINE$

etudiants

TABLEAU

0

5

$RACINE$‡etudiants

TAB_00001

OBJET

0

6

$RACINE$‡etudiants‡TAB_00001

nom

CARACTERE

Norris

0

7

$RACINE$‡etudiants‡TAB_00001

prenom

CARACTERE

Chuck

0

8

$RACINE$‡etudiants‡TAB_00001

age

CARACTERE

73

0

9

$RACINE$‡etudiants‡TAB_00001

pays

CARACTERE

USA

0

10

$RACINE$‡etudiants‡TAB_00001

adresse

OBJET

0

11

$RACINE$‡etudiants‡TAB_00001‡adresse

Code Postal

NUMERIQUE

65000

65000

12

$RACINE$‡etudiants‡TAB_00001‡adresse

Ville

CARACTERE

Tarbes

0

13

$RACINE$‡etudiants‡TAB_00001‡adresse

Rue

CARACTERE

18 Bd Jean Moulin

0

14

$RACINE$‡etudiants‡TAB_00001

notes

TABLEAU

0

15

$RACINE$‡etudiants‡TAB_00001‡notes

TAB_00001

NUMERIQUE

19,5

19,5

16

$RACINE$‡etudiants‡TAB_00001‡notes

TAB_00002

NUMERIQUE

15

15

17

$RACINE$‡etudiants‡TAB_00001‡notes

TAB_00003

NUMERIQUE

13

13

18

$RACINE$‡etudiants‡TAB_00001‡notes

TAB_00004

NUMERIQUE

16,75

16,75

19

$RACINE$‡etudiants

TAB_00002

OBJET

0

20

$RACINE$‡etudiants‡TAB_00002

nom

CARACTERE

Doe

0

21

$RACINE$‡etudiants‡TAB_00002

prenom

CARACTERE

Jane

0

22

$RACINE$‡etudiants‡TAB_00002

age

CARACTERE

45

0

23

$RACINE$‡etudiants‡TAB_00002

pays

CARACTERE

Angleterre

0

24

$RACINE$‡etudiants‡TAB_00002

adresse

OBJET

0

25

$RACINE$‡etudiants‡TAB_00002‡adresse

Code Postal

NUMERIQUE

65290

65290

26

$RACINE$‡etudiants‡TAB_00002‡adresse

Ville

CARACTERE

Juillan

0

27

$RACINE$‡etudiants‡TAB_00002‡adresse

Rue

CARACTERE

Téléport Bâtiment, 8 Pyrène AéroPôle

0

28

$RACINE$‡etudiants‡TAB_00002

notes

TABLEAU

0

29

$RACINE$‡etudiants‡TAB_00002‡notes

TAB_00001

NUMERIQUE

9,5

9,5

30

$RACINE$‡etudiants‡TAB_00002‡notes

TAB_00002

NUMERIQUE

12

12

31

$RACINE$‡etudiants‡TAB_00002‡notes

TAB_00003

NUMERIQUE

13,5

13,5

32

$RACINE$‡etudiants

TAB_00003

OBJET

0

33

$RACINE$‡etudiants‡TAB_00003

nom

CARACTERE

Ourson

0

34

$RACINE$‡etudiants‡TAB_00003

prenom

CARACTERE

Winnie

0

35

$RACINE$‡etudiants‡TAB_00003

age

CARACTERE

10

0

36

$RACINE$‡etudiants‡TAB_00003

pays

CARACTERE

France

0

37

$RACINE$‡etudiants‡TAB_00003

adresse

OBJET

0

38

$RACINE$‡etudiants‡TAB_00003

notes

TABLEAU

0

Les champs calculés ne sont pas présentés ici mais ils correspondent aux références et aux chemins des éléments père, grand-père et arrière-grand-père.

Création d’un JSON

La création d’une structure JSON dans la liste WFSWListeJSON devra passer par l’utilisation de la fonction DIALOG SW-OUTILS-JSON. L’utilisation de cette fonction permet de générer automatiquement les références des éléments de tableau et d’alimenter.

Les actions d’ajout de la fonction DIALOGSW-OUTILS-JSON

  • AJOUT-VAL-OBJET

Cette action permet d’ajouter un couple nom/Valeur avec une valeur de type « Objet ».

Le deuxième paramètre est le chemin complet de l’élément (chemin des ascendants + séparateur + référence du nouvel élément).

Voici un exemple de l’action AJOUT-VAL-OBJET :

COMMENTAIRE : "Ajout d’une valeur de type objet ‘{‘ "

VLO.CheminElement = VLO.CheminPere + VLO.SepElmnt + CLO."CLE_EXEMPLE_OBJET"

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-VAL-OBJET , CHEMIN-PERE= VLO.CheminElement )

  • AJOUT-VAL-TABLEAU

Cette action permet d’ajouter un couple nom/Valeur avec une valeur de type « Tableau ».

Le deuxième paramètre est le chemin complet de l’élément (chemin des ascendants + séparateur + référence du nouvel élément).

Voici un exemple de l’action AJOUT-VAL-TABLEAU :

COMMENTAIRE : "Ajout d’une valeur de type tableau ‘[‘ "

VLO.CheminElement = VLO.CheminPere + VLO.SepElmnt + CLO."CLE_EXEMPLE_TABLEAU"

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-VAL-OBJET , CHEMIN-PERE= VLO.CheminElement )

  • AJOUT-VAL-CAR

Cette action permet d’ajouter un couple nom/Valeur avec une valeur au format caractère.

Le deuxième paramètre est le chemin complet de l’élément (chemin des ascendants + séparateur + référence du nouvel élément).

Le dernier est la valeur de l’élément à ajouter

Voici un exemple de l’action AJOUT-VAL-CAR :

COMMENTAIRE : " Ajout de ‘CLE_EXEMPLE’: ‘VALEUR_EXEMPLE’, "

VLO.CheminElement = VLO.CheminPere + VLO.SepElmnt + CLO."CLE_EXEMPLE"

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-VAL-CAR , CHEMIN-ELEMENT= VLO.CheminElement , VALEUR-CAR= CLO."VALEUR_EXEMPLE" )

  • AJOUT-VAL-NUM

Cette action permet d’ajouter un couple nom/Valeur avec une valeur au format numérique.

Le deuxième paramètre est le chemin complet de l’élément (chemin des ascendants + séparateur + référence du nouvel élément).

Voici un exemple de l’action AJOUT-VAL-NUM :

COMMENTAIRE : " Ajout de ‘CLE_EXEMPLE_NUM’: 1024 , "

VLO.CheminElement = VLO.CheminPere + VLO.SepElmnt + CLO."CLE_EXEMPLE_NUM"

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-VAL-NUM , CHEMIN-ELEMENT= VLO.CheminElement , VALEUR-CAR= CLO.1024 )

  • AJOUT-VAL-LOG

Cette action permet d’ajouter un couple nom/Valeur avec une valeur au format logique.

Le deuxième paramètre est le chemin complet de l’élément (chemin des ascendants + séparateur + référence du nouvel élément).

Voici un exemple de l’action AJOUT-VAL-LOG :

COMMENTAIRE : " Ajout de ‘CLE_EXEMPLE_LOG’: false , "

VLO.CheminElement = VLO.CheminPere + VLO.SepElmnt + CLO."CLE_EXEMPLE_LOG"

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-VAL-LOG , CHEMIN-ELEMENT= VLO.CheminElement , VALEUR-CAR= CGL.NON )

  • AJOUT-VAL-CONT-FIC

Cette action permet d’ajouter un couple nom/Valeur avec une valeur de grande capacité. Cette valeur devra être stockée dans un fichier pour permettre à l’action AJOUT-CONT-FIC d’alimenter la valeur de l’élément JSON avec le contenu du fichier. Pour éviter les éventuels problèmes d’intégrité du JSON, cette valeur sera encodée en bas64 dans le JSON destination.

Le deuxième paramètre est le chemin complet de l’élément (chemin des ascendants + séparateur + référence du nouvel élément).

Le troisième est le PATH du fichier à ajouter.

Voici un exemple de l’action AJOUT-CONT-FIC :

COMMENTAIRE : " Ajout de ‘CLE_EXEMPLE_JPG’: ‘LzlqLzRBQVFTa1p …. LzlqLzRBQVFTa1p’, "

VLO.CheminElement = VLO.CheminPere + VLO.SepElmnt + CLO."CLE_EXEMPLE_JPG"

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-VAL-CONT-FIC, CHEMIN-ELEMENT= VLO.CheminElement , PATH-FIC = CLO."/tmp/Exemple.jpg" OPTION = CLO."")

  • AJOUT-ELEMENT-OBJET

Cette action permet d’ajouter un élément de type « Objet » à la fin d’un tableau. Elle permet donc de faire un tableau d’objets.

Le deuxième paramètre est le chemin du tableau dans lequel on souhaite ajouter l’élément.

Le dernier paramètre reçoit la valeur de la référence qui a été créée.

Voici un exemple de l’action AJOUT-ELEMENT-OBJET:

COMMENTAIRE : " Ajout d’un élément ‘{‘ à la fin d’un tableau "

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-ELEMENT-OBJET , CHEMIN-TABLEAU= VLO.CheminPere , S:REF-ELEMENT-CREE= VLO.NewRefElement )

  • AJOUT-ELEMENT-TABLEAU

Cette action permet d’ajouter un élément de type « Tableau » à la fin d’un tableau. Elle permet donc de faire un tableau de tableaux.

Le deuxième paramètre est le chemin du tableau dans lequel on souhaite ajouter l’élément.

Le dernier paramètre reçoit la valeur de la référence qui a été créée.

Voici un exemple de l’action AJOUT-ELEMENT-TABLEAU:

COMMENTAIRE : " Ajout d’un élément ‘[‘ à la fin d’un tableau "

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-ELEMENT-TABLEAU , CHEMIN-TABLEAU= VLO.CheminPere , S:REF-ELEMENT-CREE= VLO.NewRefElement )

  • AJOUT-ELEMENT-CAR

Cette action permet d’ajouter un élément de type caractère à la fin d’un tableau. Elle permet donc de faire un tableau de valeurs caractères.

Le deuxième paramètre est le chemin du tableau dans lequel on souhaite ajouter l’élément.

Le troisième est la valeur à ajouter dans le tableau.

Le dernier paramètre reçoit la valeur de la référence qui a été créée.

Voici un exemple de l’action AJOUT-ELEMENT-CAR:

COMMENTAIRE : " Ajout d’un élément de type CAR à la fin d’un tableau "

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-ELEMENT-TABLEAU , CHEMIN-TABLEAU= VLO.CheminPere, VALEUR-CAR-TAB = CLO."VALEUR_EXEMPLE", S:REF-ELEMENT-CREE= VLO.NewRefElement )

  • AJOUT-ELEMENT-NUM

Cette action permet d’ajouter un élément de type numérique à la fin d’un tableau. Elle permet donc de faire un tableau de valeurs numériques.

Le deuxième paramètre est le chemin du tableau dans lequel on souhaite ajouter l’élément.

Le troisième est la valeur à ajouter dans le tableau.

Le dernier paramètre reçoit la valeur de la référence qui a été créée.

Voici un exemple de l’action AJOUT-ELEMENT-NUM:

COMMENTAIRE : " Ajout d’un élément de type NUM à la fin d’un tableau "

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-ELEMENT-TABLEAU , CHEMIN-TABLEAU= VLO.CheminPere, VALEUR-NUM-TAB = CLO1024 , S:REF-ELEMENT-CREE= VLO.NewRefElement )

  • AJOUT-ELEMENT-LOG

Cette action permet d’ajouter un élément de type logique à la fin d’un tableau. Elle permet donc de faire un tableau de valeurs logiques.

Le deuxième paramètre est le chemin du tableau dans lequel on souhaite ajouter l’élément.

Le troisième est la valeur à ajouter dans le tableau.

Le dernier paramètre reçoit la valeur de la référence qui a été créée.

Voici un exemple de l’action AJOUT-ELEMENT-LOG:

COMMENTAIRE : " Ajout d’un élément de type LOG à la fin d’un tableau "

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-ELEMENT-TABLEAU , CHEMIN-TABLEAU= VLO.CheminPere, VALEUR-LOG-TAB = CGL.OUI , S:REF-ELEMENT-CREE= VLO.NewRefElement )

  • AJOUT-ELEMENT-CONT-FIC

Cette action permet d’ajouter un élément de grande capacité à la fin d’un tableau. Cette valeur devra être stockée dans un fichier pour permettre à l’action AJOUT-ELEMENT-CONT-FIC d’alimenter la valeur de l’élément JSON avec le contenu du fichier. Pour éviter les éventuels problèmes d’intégrité du JSON, cette valeur sera encodée en base 64 dans le JSON destination.

Voici un exemple de l’action AJOUT-ELEMENT-FIC:

COMMENTAIRE : " Ajout d’un élément de type grande capacité à la fin d’un tableau "

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-ELEMENT-CONT-FIC , CHEMIN-TABLEAU= VLO.CheminPere, PATH-FIC = CLO."/tmp/Exemple.jpg" , S:REF-ELEMENT-CREE= VLO.NewRefElement )

Les actions d’importation ou d’exportation de fichier

Ces actions ont pour but d’alimenter la liste WFSWListeJSON à partir d’un fichier JSON ou de générer un fichier JSON à partir de la liste WFSWListeJSON.

  • IMPORTER-FICHIER

Cette action a pour but d’alimenter la liste WFSWListeJSON à partir d’un fichier JSON.

Voici un exemple de l’action IMPORTER-FICHIER :

COMMENTAIRE : "Alimentation de la liste WFSWListeJSON à partir d'un fichier 'Modèle'."

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= IMPORTER-FICHIER , PATH-FIC= CLO."/tmp/FichierModele.json" , OPTION= CLO."" )

  • EXPORTER-FICHIER

Ces actions ont pour but de générer un fichier JSON à partir des informations la liste WFSWListeJSON.

Voici un exemple de l’action EXPORTER-FICHIER :

COMMENTAIRE : " Enregistrement dans un fichier JSON "

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= EXPORTER-FICHIER , PATH-FIC= CLO."/tmp/ResFicJson.json" , OPTION= CLO."" )

Autres Fonctions DIALOG

  • SW-OUTILS-JSON-SEP

Cette fonction DIALOG permet de récupérer dans une variable le caractère de séparation entre les références pour les listes chainées des références des ascendants ou le chemin complet d’un élément.

Exemple d’utilisation :

COMMENTAIRE : "Récupération du séparateur des chemins des éléments "

VLO.SepElmnt = SW-OUTILS-JSON-SEP( )

  • SW-OUTILS-JSON-RACINE

Cette fonction DIALOG permet de récupérer la référence de la racine (le père du premier élément) d’une structure JSON.

Exemple d’utilisation :

COMMENTAIRE : "Récupération de la référence de la racine "

VLO.refRacine = SW-OUTILS-JSON-RACINE( )

Exemple complet de création d’un JSON

Voici un exemple de fichier JSON avec sa fonction DIALOG de génération.

➡️ Exemple de fichier JSON :

{

"DIAP_METHODE": "ISSWDG_SOR",

"DIAP_DATA": {

"FicTestImg.jpg": "LzlqLzRBQVFTa1pKUmdBQkFRRUFZQUJnQUFELzJ3QkRBRkEzUEVZOE1sQkdRVVphVlZCZm

..... Contenu tronqué .....

VBWi9uU2YzMi9PZ0JVbGtMcmwyNmp2UUJxVUFmL1o=",

"Voitures": [

{

"immatriculation": "0633BG64",

"modele": "Golf4",

"couleur": "rouge",

"nbKm": 1024.0,

"Dispo":true

},

{

"immatriculation": "457HJ65",

"modele": "CLIO2",

"couleur": "vert",

"nbKm": 164230.0,

"Dispo": false

}

]

}

}

➡️ Fonction DIALOG de génération

EFFACER Liste WFSWListeJSON

COMMENTAIRE : "Récupération du séparateur des chemins des éléments "

VLO.SepElmnt = SW-OUTILS-JSON-SEP( )

COMMENTAIRE : "Récupération de la référence de la racine "

VLO.refRacine = SW-OUTILS-JSON-RACINE( )

COMMENTAIRE : "Ajout du premier objet racine ‘{‘ "

VLO.CheminPere = VLO.refRacine

VLO.CheminElement = VLO.CheminPere

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-VAL-OBJET , CHEMIN-PERE= VLO.CheminElement )

COMMENTAIRE : " Ajout de ‘DIAP_METHODE’: ‘ISSWDG_SOR’, "

VLO.CheminElement = VLO.CheminPere + VLO.SepElmnt + CLO."DIAP_METHODE"

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-VAL-CAR , CHEMIN-ELEMENT= VLO.CheminElement , VALEUR-CAR= CLO."ISSWDG_SOR" )

COMMENTAIRE : " Ajout de l’objet ‘DIAP_DATA’: {"

VLO.CheminElement = VLO.CheminPere + VLO.SepElmnt + CLO."DIAP_DATA"

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-VAL-OBJET , CHEMIN-PERE= VLO.CheminElement )

COMMENTAIRE : "Ajout de ‘FicTestImg.jpg’: ‘LzlqLzRBQ…’ avec le contenu d’un fichier JPG "

VLO.CheminPere = VLO.CheminElement + VLO.SepElmnt + CLO."FicTestImg.jpg"

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-VAL-CONT-FIC , CHEMIN-ELEMENT= VLO.CheminPere , PATH-FIC= CLO."/tmp/FicTestImg.jpg" , OPTION= CLO."" )

COMMENTAIRE : " Ajout du tableau ‘Voitures’: [ "

VLO.CheminElement = VLO.CheminElement + VLO.SepElmnt + CLO."Voitures"

VLO.CheminPere = VLO.CheminElement

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-VAL-TABLEAU , CHEMIN-ELEMENT-TAB= VLO.CheminElement )

COMMENTAIRE : " Ajout du 1er élément du tableau ‘{‘ "

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-ELEMENT-OBJET , CHEMIN-TABLEAU= VLO.CheminPere , S:REF-ELEMENT-CREE= VLO.NewRefElement )

COMMENTAIRE : "Ajout de ‘immatriculation’: ‘0633BG64’,"

VLO.CheminElement = VLO.CheminPere + VLO.SepElmnt + VLO.NewRefElement + VLO.SepElmnt + CLO."immatriculation"

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-VAL-CAR , CHEMIN-ELEMENT= VLO.CheminElement , VALEUR-CAR= CLO."0633BG64" )

COMMENTAIRE : "Ajout de 'modele': 'Golf4',"

VLO.CheminElement = VLO.CheminPere + VLO.SepElmnt + VLO.NewRefElement + VLO.SepElmnt + CLO."modele"

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-VAL-CAR , CHEMIN-ELEMENT= VLO.CheminElement , VALEUR-CAR= CLO."Golf4" )

COMMENTAIRE : "Ajout de 'couleur': 'rouge',"

VLO.CheminElement = VLO.CheminPere + VLO.SepElmnt + VLO.NewRefElement + VLO.SepElmnt + CLO."couleur"

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-VAL-CAR , CHEMIN-ELEMENT= VLO.CheminElement , VALEUR-CAR= CLO."rouge" )

COMMENTAIRE : "Ajout de 'nbKm': 1024.0,"

VLO.CheminElement = VLO.CheminPere + VLO.SepElmnt + VLO.NewRefElement + VLO.SepElmnt + CLO."nbKm"

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-VAL-NUM , CHEMIN-ELEMENT= VLO.CheminElement , VALEUR-NUM= CLO.1024 )

COMMENTAIRE : "Ajout de 'Dispo': true"

VLO.CheminElement = VLO.CheminPere + VLO.SepElmnt + VLO.NewRefElement + VLO.SepElmnt + CLO."Dispo"

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-VAL-LOG , CHEMIN-ELEMENT= VLO.CheminElement , VALEUR-LOG= CGL.OUI )

COMMENTAIRE : " Ajout du 2eme élément du tableau ‘{‘ "

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-ELEMENT-OBJET , CHEMIN-TABLEAU= VLO.CheminPere , S:REF-ELEMENT-CREE= VLO.NewRefElement )

COMMENTAIRE : "Ajout de 'immatriculation': '457HJ65',"

VLO.CheminElement = VLO.CheminPere + VLO.SepElmnt + VLO.NewRefElement + VLO.SepElmnt + CLO."immatriculation"

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-VAL-CAR , CHEMIN-ELEMENT= VLO.CheminElement , VALEUR-CAR= CLO."457HJ65" )

COMMENTAIRE : "Ajout de 'modele': 'CLIO2',"

VLO.CheminElement = VLO.CheminPere + VLO.SepElmnt + VLO.NewRefElement + VLO.SepElmnt + CLO."modele"

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-VAL-CAR , CHEMIN-ELEMENT= VLO.CheminElement , VALEUR-CAR= CLO."CLIO2" )

COMMENTAIRE : "Ajout de 'couleur': 'vert'"

VLO.CheminElement = VLO.CheminPere + VLO.SepElmnt + VLO.NewRefElement + VLO.SepElmnt + CLO."couleur"

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-VAL-CAR , CHEMIN-ELEMENT= VLO.CheminElement , VALEUR-CAR= CLO."vert" )

COMMENTAIRE : "Ajout de 'nbKm': 164230.0,"

VLO.CheminElement = VLO.CheminPere + VLO.SepElmnt + VLO.NewRefElement + VLO.SepElmnt + CLO."nbKm"

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-VAL-NUM , CHEMIN-ELEMENT= VLO.CheminElement , VALEUR-NUM= CLO.164230 )

COMMENTAIRE : "Ajout de 'Dispo': false"

VLO.CheminElement = VLO.CheminPere + VLO.SepElmnt + VLO.NewRefElement + VLO.SepElmnt + CLO."Dispo"

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= AJOUT-VAL-LOG , CHEMIN-ELEMENT= VLO.CheminElement , VALEUR-LOG= CGL.NON )

COMMENTAIRE : " Enregistrement dans un fichier JSON "

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= EXPORTER-FICHIER , PATH-FIC= CLO."/tmp/ResFicJson.json" , OPTION= CLO."" )

Lecture et extraction des informations d’un JSON

La lecture et l’extraction d’informations se feront « classiquement » avec des parcours et des recherches sur la liste DIALOG WFSWListeJSON. Il conviendra d’utiliser les informations suivantes pour optimiser l’extraction d’informations :

  • Niveau de l'élément

  • Chemin complet de l'élément ou de l’un de ses ascendants

  • Référence de l'élément ou de l’un de ses ascendants

  • Type de l'élément ou de l’un de ses ascendants.

Une fois l’élément obtenu, il faudra récupérer la valeur dans le champ correspondant à son type :

TypeElement

Type de l'élément (CARACTERE,NUMERIQUE,LOGIQUE,LONGCHAR)

ValeurCarElement

Valeur caractère de l'élément

ValeurNumElement

Valeur décimale de l'élément

ValeurLogElement

Valeur logique de l'élément

Remarque : Les valeurs des éléments de grande capacité (TypeElement= « LONGCHAR ») pourront être récupérées avec l’action RECUP-CONT-FIC de la fonction DIALOG SW-OUTILS-JSON (voir chapitre ci-dessous)

Exemple de lecture d’un JSON

Voici un exemple d’extraction d’informations dans le fichier JSON ci-dessous :

{

"DIAP_METHODE": "ISSWDG_SOR",

"DIAP_DATA": {

"FicTestImg.jpg": "LzlqLzRBQVFTa1pKUmdBQkFRRUFZQUJnQUFELzJ3QkRBRkEzUEVZOE1sQkdRVVphVlZCZm

..... Contenu tronqué .....

VBWi9uU2YzMi9PZ0JVbGtMcmwyNmp2UUJxVUFmL1o=",

"Voitures": [

{

"immatriculation": "0633BG64",

"modele": "Golf4",

"couleur": "rouge",

"nbKm": 1024.0,

"Dispo":true

},

{

"immatriculation": "457HJ65",

"modele": "CLIO2",

"couleur": "vert",

"nbKm": 164230.0,

"Dispo": false

}

]

}

}

COMMENTAIRE : "Récupération du séparateur des chemins des éléments"

VLO.SepElmnt = SW-OUTILS-JSON-SEP( )

COMMENTAIRE : "Récupération du chemin absolu du tableau 'voitures'"

RECH PREM LST WFSWListeJSON AVEC WFSWListeJSON.CleRefElement = CLO."Voitures" :

VLO.CheminTableauVoiture = WFSWListeJSON.CleLstRefAscendants + VLO.SepElmnt + WFSWListeJSON.CleRefElement

FIN_BLOC

COMMENTAIRE : "Alimentation d'une liste avec les informations 'modele' 'couleur' et 'Dispo' de chaque voiture."

VLO.LigneTrace = CLO.""

POUR CHAQUE LST WFSWListeJSON AVEC WFSWListeJSON.Cal_PathPere = VLO.CheminTableauVoiture :

VLO.CheminElementTableau = WFSWListeJSON.CleLstRefAscendants + VLO.SepElmnt + WFSWListeJSON.CleRefElement

COMMENTAIRE : "Parcours de toutes les propriétés d'une voiture"

POUR CHAQUE LST WFSWListeJSON AVEC WFSWListeJSON.Cal_PathPere = VLO.CheminElementTableau PAR NumOrdElement CROISSANT :

SI WFSWListeJSON.CleRefElement = CLO."modele"

VLO.LigneTrace = VLO.LigneTrace + " " + WFSWListeJSON.ValeurCarElement

FIN_BLOC

SI WFSWListeJSON.CleRefElement = CLO."couleur"

VLO.LigneTrace = VLO.LigneTrace + " " + WFSWListeJSON.ValeurCarElement

FIN_BLOC

SI WFSWListeJSON.CleRefElement = CLO."Dispo"

VLO.LigneTrace = VLO.LigneTrace + " " + CHAINE( VALEUR= WFSWListeJSON.ValeurLogElement )

CREATION Liste LST.ListeTrace :

PRENDRE ListeTrace LigneTrace = VLO.LigneTrace

FIN_BLOC

VLO.LigneTrace = CLO.""

FIN_BLOC

FIN_BLOC

FIN_BLOC

Élément de grande capacité

Pour pouvoir exploiter les valeurs de grande capacité dans les JSON, l’action RECUP-CONT-FIC permet d’enregistrer un contenu dans un fichier.

  • RECUP-CONT-FIC

Cette action permet d’enregistrer dans un fichier le contenu de grande capacité d’un élément de la liste WFSWListeJSON (si TypeElement= « LONGCHAR »).

Voici un exemple d’utilisation :

COMMENTAIRE : " Exemple de récupération d’un pdf contenu dans un élément JSON "

VLO.RetourFonction = SW-OUTILS-JSON( ACTION= RECUP-CONT-FIC , CHEMIN-TABLEAU= VLO.CheminPere, PATH-FIC = CLO."/tmp/Exemple.pdf" , OPTION = CLO."" )


JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.