PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Schéma JSON et autocomplétion
Schéma JSON et autocomplétion
Iniciado por Deltro, 18,abr. 2019 12:29 - 7 respuestas
Miembro registrado
3 mensajes
Publicado el 18,abril 2019 - 12:29
Bonjour,
je manipule du format JSON avec Windev 24. La structure de mon JSON est décrite dans un schéma que j'intègre dans mon projet et que je spécifie lors de la déclaration de ma variable JSON.

Voici un exemple simple de structure que je veux manipuler :
http://json-schema.org/learn/miscellaneous-examples.html
Dernier exemple (Array of things).

Le schéma décrit les propriétés de mon objet (Fruit, Vegetables), et une définition de type (Veggie) qui contient elle même des propriétés.
J'ai importé le schéma dans mon projet sous le nom Test_JSON_Schema

Je déclare ma variable comme ceci :
Test est un JSON <Description="Test_JSON_Schema">


Premier problème : pour accéder aux propriétés, je dois ajouter .properties à mon objet.
Test.properties.fruits[1] = "Orange"

Ce qui rend mon JSON faux après sérialisation.

Je peux tricher en déclarant ma variable comme ceci :
Test est un JSON <Description="Test_JSON_Schema.properties">

... mais j'imagine que ce n'est pas la bonne solution.

Second problème, quelle que soit la façon dont je déclare ma variable, je ne peux pas accéder aux propriétés de ma propriété vegetables.
Test.properties.vegetables[1].???

Je n'ai pas l'autocomplétion sur veggieName.

Je dois certainement mal faire les choses mais je ne vois pas.
(Bien évidement le schéma que je souhaite utiliser est bien plus complexe que cet exemple).
Merci d'avance pour vos lumières !
Miembro registrado
1.330 mensajes
Publicado el 18,abril 2019 - 12:41
Salut Deltro,

Si tu veux de l'aide faudra mettre la description du JSON et pas un exemple de.....
Sans la structure, on ne peut rien faire.

Cordialement
Daryl

--
http://www.concept4u2.com
Miembro registrado
953 mensajes
Publicado el 18,abril 2019 - 13:20
bonjour Deltro,

n'importez pas le schéma JSON mais la partie data, je ne crois pas que Windev puisse gére le descriptif du schéma JSON mais il gère l'autocomplétion avec un fichier 'exemple'

donc importez çà :
{
"fruits": [ "apple", "orange", "pear" ],
"vegetables": [
{
"veggieName": "potato",
"veggieLike": true
},
{
"veggieName": "broccoli",
"veggieLike": false
}
]
}


plutôt que çà :
{
"$id": "https://example.com/arrays.schema.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "A representation of a person, company, organization, or place",
"type": "object",
"properties": {
"fruits": {
"type": "array",
"items": {
"type": "string"
}
},
"vegetables": {
"type": "array",
"items": { "$ref": "#/definitions/veggie" }
}
},
"definitions": {
"veggie": {
"type": "object",
"required": [ "veggieName", "veggieLike" ],
"properties": {
"veggieName": {
"type": "string",
"description": "The name of the vegetable."
},
"veggieLike": {
"type": "boolean",
"description": "Do I like this vegetable?"
}
}
}
}
}


bon dèv ;)
Miembro registrado
3 mensajes
Publicado el 18,abril 2019 - 14:40
Bonjour Daryl,
La structure du JSON est dans le lien.

Bonjour Christophe,
Merci pour votre retour. Je craignais cette limite.
C'est quand même décevant que Windev gère l'autocomplétion sur base d'un fichier exemple et pas d'un vrai schéma JSON. Les contrôles sur données (données obligatoires, valeurs min max, valeurs nomenclaturées etc.) ne peuvent donc pas être gérées.

Merci pour votre aide.
Miembro registrado
182 mensajes
Publicado el 18,abril 2019 - 16:02
Bonjour,
Vous avez essayé avec JSONVersVariant ?
https://doc.pcsoft.fr/?1000021052
Miembro registrado
953 mensajes
Publicado el 18,abril 2019 - 17:14
rebonjour,

le type JSON est encore tout récent , apparu dans la v24.
On peu importer sous Windev un XSD pour les schémas XML , peu être qu'après une évolution future, on pourra importer un schéma JSON.

je crois qu'il n'y a actuellement pas d'extension spécifique pour les schémas JSON.

Ou alors prévoir dans Windev, un nouveau mot clé : <schema=>

_mon_json est un JSON <schema="schema_json'>
Miembro registrado
1.330 mensajes
Publicado el 19,abril 2019 - 12:50
Salut Deltro,

En fait tu ne dois pas utiliser le schéma car en effet JSON est nouveau dans la version 24 et il est géré comme un XML avec ses différents noeuds, d'ou le fait que tu dois mettre properties avant fruits

Utilise directement les données.
Voici un petit bout de code qui te mets les données dans un JSON et que tu pourras utiliser normalement (mais par contre tu oublies la complétion, ce sera peut-être dans une prochaine version :D)

Ici je lit un fichier en local, si les données viennes d'un site, tu dois utiliser JSONExecute() https://doc.pcsoft.fr/fr-FR/?1000017284

gjsonTest est un JSON
gJsonTestSerialise est un JSON
gnHandle est un entier
sFile est une chaîne = "..\..\Documents\json_Data.json"
gsSerial est une chaîne ANSI

// Lecture des données
gnHandle = fOuvre(sFile, foLecture)
gjsonTest = fLit(gnHandle, fTaille(sFile))
fFerme(gnHandle)

// Modification des données
gjsonTest.fruits[2] = "BANANES"
gjsonTest.vegetables[1].veggieName = "POMME DE TERRE"
gjsonTest.vegetables[2].veggieLike = Vrai

// Sérialisation des données modifiées
Sérialise(gJsonTestSerialise, gsSerial, psdJSON)

// Affichage des données
Info(gjsonTest, "", "***************************************", "", gJsonTestSerialise)


Bon Dev
Daryl

--
http://www.concept4u2.com
Miembro registrado
3 mensajes
Publicado el 23,abril 2019 - 14:34
Merci pour vos infos.