PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV 2024 → Parcours d'un Json "compacté"
Parcours d'un Json "compacté"
Débuté par GP, 29 mai 2017 18:35 - 7 réponses
Membre enregistré
8 messages
Popularité : +1 (1 vote)
Posté le 29 mai 2017 - 18:35
Bonjour,

J'ai un souci et je ne sais plus trop où chercher.
Je récupère via l'API de Neo4J (base de graphes) un json répondant à une requite sur la base.
Jusque là tout va bien, je récupère un json compacté, et après test sur un éditeur json en ligne j'arrive à le décompater (le render lisible avec retour chariot) sans erreur.
Le souci est sous webdev.
J'essaie d'utiliser la function jsonversvariant pour pouvoir l'exploier + facilement (c'est ce qu'il faut faire de ce que j'ai compris) mais le retour est 0.
Est-ce-parceque le fichier est au format compacté ? (je ne pense pas pouvoir y faire grand chose) ou ais-je oublié quelque chose ?
D'avance merci de votre aide.

Mon code avec en commentaire le résultat quand j'affiche quelque chose :
NeoRequete est un restRequête
NeoReponse est un restRéponse
v est un Variant

sObjet est une chaîne = [
{
"query" : "match (n:Application)-[r]->(m:BusinessLine) return n,r,m limit 15",
"params" : { }
}
]//ici c'est un petit json qui contient la requête que j'envoie au serveur Neo4J,

NeoRequete..URL="http://monserveur:7474/db/data/cypher"
NeoRequete..ContentType=typeMimeJSON
NeoRequete..Méthode=httpPost
NeoRequete..Utilisateur="login"
NeoRequete..MotDePasse="motdepasse"
NeoRequete..Contenu=sObjet
NeoReponse=RESTEnvoie(NeoRequete) // ici je reçois le résultat de ma requête

SI ErreurDétectée ALORS
Erreur(ErreurInfo(errComplet))
SINON
Info(NeoReponse..Contenu)//Là tout va bien, le json est affiché dans la fenêtre d'info en mode "compact"
Info(NeoReponse.CodeEtat)//code retour http 200
v=JSONVersVariant(NeoReponse..Contenu)
Info(v) //affiche 0
POUR TOUT x DE v..Membre
Trace("Le membre " + x..Nom + " a la valeur " + x..Valeur) //tombe en erreur en disant que le tableau est vide (forcément...)
FIN
FIN


Le json que je reçois est "compact" (minimized), voici le début (il est un peu gros pourmettre ici mais si nécessaire je peux le faire) :
{ "columns" : [ "n", "r", "m" ], "data" : [ [ { "metadata" : { "id" : 4927, "labels" : [ "Application" ] }, "data" : { "name" : "NetIQ" }, "paged_traverse" : "http://monserveur:7474/db/data/node/4927/paged/traverse/{returnType}{…}", "outgoing_relationships" : "http://monserveur:7474/db/data/node/4927/relationships/out", "outgoing_typed_relationships" : "http://monserveur:7474/db/data/node/4927/relationships/out/{-list|&|types}", "labels" : "http://monserveur:7474/db/data/node/4927/labels", "create_relationship" : "http://monserveur:7474/db/data/node/4927/relationships", "traverse" : "http://monserveur:7474/db/data/node/4927/traverse/{returnType}", "extensions" : { }, "all_relationships" : "http://monserveur:7474/db/data/node/4927/relationships/all", "all_typed_relationships" : "http://monserveur:7474/db/data/node/4927/relationships/all/{-list|&|types}", "property" : "http://monserveur:7474/db/data/node/4927/properties/{key}", "self" : "http://monserveur:7474/db/data/node/4927", "incoming_relationships" : "http://monserveur:7474/db/data/node/4927/relationships/in", "properties" : "http://monserveur:7474/db/data/node/4927/properties", "incoming_typed_relationships" : "http://monserveur:7474/db/data/node/4927/relationships/in/{-list|&|types}" }, { "extensions" : { }, "metadata" : { "id" : 17221, "type" : "IN" }, "data" : { }, "property" : "http://monserveur:7474/db/data/relationship/17221/properties/{key}", "start" : "http://monserveur:7474/db/data/node/4927", "self" : "http://monserveur:7474/db/data/relationship/17221", "end" : "http://monserveur:7474/db/data/node/18680", "type" : "IN", "properties" : "http://monserveur:7474/db/data/relationship/17221/properties" }, { "metadata" : { "id" : 18680, "labels" : [ "BusinessLine" ] }, "data" : { ...
Membre enregistré
2 571 messages
Popularité : +222 (260 votes)
Posté le 29 mai 2017 - 19:10
Bonsoir,

Peut-on avoir la totalité di json pour voir s'il on arrive à le lire ?

--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Membre enregistré
8 messages
Popularité : +1 (1 vote)
Posté le 30 mai 2017 - 13:09
Bonjour,

Merci. Finalement nous avons trouvé le souci, c'était dû à un manque de comprehension du type variant (la doc est basée sur des exemples trop simple je trouve) et de la structure du json renvoyé.
Donc aucun problème pour connecter webdev à Neo4j :-)
Neo4j génère un json avec plusieurs tableaux sur plusieurs niveaux, il faut bien le comprendre pour pouvoir le parcourir.

pour référence pour ceux qui pourraient butter avec neo4j, voici un bout de code qui marche pour nous :
NeoRequete est un restRequête
NeoReponse est un restRéponse

sObjet est une chaîne = [
{
"query" : "match (n:Application)-[r]->(m:BusinessLine) RETURN n,r,m limit 15", //à remplacer par votre requite neo4j
"params" : { }
}
]

NeoRequete..URL="http://monserveur:7474/db/data/cypher"
NeoRequete..ContentType=typeMimeJSON
NeoRequete..Méthode=httpPost
NeoRequete..Utilisateur="login"
NeoRequete..MotDePasse="motdepasse"
NeoRequete..Contenu=sObjet
NeoReponse=RESTEnvoie(NeoRequete)
vjs est un Variant = JSONVersVariant(NeoReponse..Contenu) //on converti le retour de la requite en variant

Info(vjs.data[2][1].data.name) //affiche un élément

//parcours d'un morceau en masse :
POUR TOUT x de vjs.data[2][1]
Trace("Le membre " + x..Nom + " a la valeur " + x..Valeur) //tombe en erreur en disant que le tableau est vide
FIN
Membre enregistré
8 messages
Popularité : +1 (1 vote)
Posté le 30 mai 2017 - 14:14
contrairement au commentaire que j'ai oublié d'enlever, le trace à la fin renvoie bien les elements.
Posté le 23 juin 2017 - 11:12
Bonjour GP,

Moi je voudrais parcourir un tableau qui est continu dans un json, es ce que vous pouvez me donner une solution svp
Membre enregistré
8 messages
Popularité : +1 (1 vote)
Posté le 23 juin 2017 - 14:43
Bonjour Cheikhou,
Pouvez vous copier un extrait du json ?
Merci.
Posté le 27 septembre 2017 - 20:24
Bonjour,

Avez-vous essayé de vous connecter à Couchbase server (et Couchbase mobile) ?

Cette base présente des caractéristiques intéressantes.

Cordialement

PhilDet
Posté le 22 octobre 2023 - 20:00
Bonjour
Comment est-ce que vous avez finalement résolu ce problème dans un contexte NEO4J?