PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WEBDEV 2024 → Parcours d'un Json "compacté"
Parcours d'un Json "compacté"
Iniciado por GP, 29,may. 2017 18:35 - 7 respuestas
Miembro registrado
8 mensajes
Popularité : +1 (1 vote)
Publicado el 29,mayo 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" : { ...
Miembro registrado
2.566 mensajes
Popularité : +222 (260 votes)
Publicado el 29,mayo 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
Miembro registrado
8 mensajes
Popularité : +1 (1 vote)
Publicado el 30,mayo 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
Miembro registrado
8 mensajes
Popularité : +1 (1 vote)
Publicado el 30,mayo 2017 - 14:14
contrairement au commentaire que j'ai oublié d'enlever, le trace à la fin renvoie bien les elements.
Publicado el 23,junio 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
Miembro registrado
8 mensajes
Popularité : +1 (1 vote)
Publicado el 23,junio 2017 - 14:43
Bonjour Cheikhou,
Pouvez vous copier un extrait du json ?
Merci.
Publicado el 27,septiembre 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
Publicado el 22,octubre 2023 - 20:00
Bonjour
Comment est-ce que vous avez finalement résolu ce problème dans un contexte NEO4J?