[Résolu] Json et lire les données


#1

J’ai du mal avec l’exploitation des variables…
J’ai un tableau de coordonnées, avec une valeur (1 pour chaque coordonnée dans mon exemple)

Je fais :
Décoder la chaîne JSON “{‘1’:{‘1’:1,‘2’:1,‘3’:1,‘4’:1,‘5’:1,‘6’:1,‘7’:1},‘2’:{‘1’:1,‘2’:1,‘3’:1,‘4’:1,‘5’:1,‘6’:1,‘7’:1},‘3’:{‘1’:1,‘2’:1,‘3’:1,‘4’:1,‘5’:1,‘6’:1,‘7’:1},‘4’:{‘1’:1,‘2’:1,‘3’:1,‘4’:1,‘5’:1,‘6’:1,‘7’:1},‘5’:{‘1’:1,‘2’:1,‘3’:1,‘4’:1,‘5’:1,‘6’:1,‘7’:1},‘6’:{‘1’:1,‘2’:1,‘3’:1,‘4’:1,‘5’:1,‘6’:1,‘7’:1},‘7’:{‘1’:1,‘2’:1,‘3’:1,‘4’:1,‘5’:1,‘6’:1,‘7’:1},‘8’:{‘1’:1,‘2’:1,‘3’:1,‘4’:1,‘5’:1,‘6’:1,‘7’:1},‘9’:{‘1’:1,‘2’:1,‘3’:1,‘4’:1,‘5’:1,‘6’:1,‘7’:1},‘10’:{‘1’:1,‘2’:1,‘3’:1,‘4’:1,‘5’:1,‘6’:1,‘7’:1}}” et la stocker dans positions2

Maintenant, comment je fais pour voir quelle valeur j’ai, et placer mes objets, en fonction de la valeur stockée ?

J’essaie dans une boucle :
Essai 1
Condition :
La variable positions2.ToString(Variable(X)).ToString(Variable(Y)) est = à 1
Faire : créer le bloc voulu

Essai 2
Condition :
La variable VariableString(positions2.ToString(Variable(X)).ToString(Variable(Y))) est = à 1
Faire : créer le bloc voulu

Evidemment, ma condition ne va pas du tout…
Mais peut-être mon json non plus…

Je ne trouve pas d’exemple parlant pour gdevelop.
Merci d’avance pour votre aide.


#2

Hello,

Il faudrait qu’on voit comment tu lis/exploites ton json. Il y a un exemple ou deux portant sur la lecture ou l’écriture de Json dans les exemples Gdevelop.


#3

Bonjour Kink

Je n’ai pas bien compris ta réponse, car j’ai mis tout ce qui me semblait nécessaire pour lire le json dans mon exemple.

Je n’ai pas vu d’exemple utilisant le json dans les exemples par défaut, sauf 1… mais plus que spartiate et pour moi d’aucune utilité.

Tu peux m’en dire plus sur ce que tu voulais dire ?
merci pour ton aide.


#4

Salut,
J’ai du mal à comprendre ce que tu cherches à faire, ton exemple n’est pas très clair.
Mais si tu veux accéder à la dernière valeur de ton tableau, par exemple, tu demandes positions2.10.7 et ça te renverra 1… je crois. :sweat_smile:


#5

Bonjour Gruk

En te répondant, j’ai eu une illumination…
J’ai retesté :
La variable positions2.ToString(Variable(X)).ToString(Variable(Y)) est = à “1” (donc en texte !) et c’est passé !

Merci en tout cas pour votre aide !


#6

Bonjour à tous !
Je reviens un peu avec la même problématique !

Je charge des données JSON, via POST.
Mon JSON :
{
“id”: 148,
“multi”:5,
“pos”: {“1”: {“2”: 1,“5”: 5,“7”: 1},“2”: {“4”: 1,“5”: 1},“3”: {“2”: 1,“3”: 1,“4”: 1,“5”: 1,“6”: 1},“4”: {“1”: 3,“2”: 1,“3”: 2,“6”: 1,“7”: 3},“5”: {“3”: 3,“5”: 3,“6”: 1},“6”: {“2”: 1,“4”: 4,“5”: 3,“6”: 1},“7”: {“2”: 1,“3”: 1,“4”: 1,“5”: 1,“6”: 1,“7”: 1},“8”: {“1”: 4,“4”: 3,“7”: 3},“9”: {“1”: 1,“3”: 1,“4”: 1,“5”: 1,“6”: 1,“7”: 1},“10”: {“2”: 4,“3”: 5,“5”: 3}},
“id2” : 548
}

Je parse, et j’ai bien accès aux données (stocké dans response).
Exemple :
Do "test "+GlobalVariableString(response.pos.1.5) to the text of debugVar
Ca m’affiche bien 5, donc c’est ok.

Je dois faire une boucle pour tester les valeurs dans response.pos
Dans response.pos, j’ai des positions X et Y, dans lesquelles j’ai stocké des valeurs de 1 à 5.

Sauf que je n’arrive pas à boucler et tester ces valeurs.
Si je fais :
Si GlobalVariable(response.pos.1.2) = 1 =>ok, ça marche

Si je fais :
Si GlobalVariable(response.pos.Variable(X).Variable(Y)) = 1 =>ça ne marche plus
(X et Y sont bien initialisées !!)

En gros, je ne trouve pas comment appeler X et Y

Merci d’avance pour votre aide


#7

Utilise la syntaxe tableau.
response.pos[1]
Je pense que response.pos[1][2] ça ira


#8

Non, pas du tout :
response.pos[1][2] n’est pas = 1
Alors que
response.pos.1.2 = 1

Et je veux pouvoir appeler de X et Y
du genre
response.pos.X.Y = 1


#9

le souci est que tout les numéros sont des chaines de caractère dans ton JSON, essai
response.pos[“1”]
Vois ce que ça retourne, ensuite remplace “1” par une variable de texte


#10

TOP !!!

La solution est : response.pos[ToString(Variable(X))][ToString(Variable(Y))]
J’ai vraiment du mal à comprendre “naturellement la logique” de l’appel des variables…

J’ai essayé je ne sais combien de truc depuis 2h…

Un grand merci à toi !


#11

reponse est ton JSON

il y a que des {}, c’est une syntaxe objet en JS
{“1”: {“2”: 1,“5”: 5,“7”: 1},“2”: {“4”: 1,“5”: 1},“3”: {“2”: 1,“3”: 1,“4”: 1,“5”: 1,“6”: 1},“4”: {“1”: 3,“2”: 1,“3”: 2,“6”: 1,“7”: 3},“5”: {“3”: 3,“5”: 3,“6”: 1},“6”: {“2”: 1,“4”: 4,“5”: 3,“6”: 1},“7”: {“2”: 1,“3”: 1,“4”: 1,“5”: 1,“6”: 1,“7”: 1},“8”: {“1”: 4,“4”: 3,“7”: 3},“9”: {“1”: 1,“3”: 1,“4”: 1,“5”: 1,“6”: 1,“7”: 1},“10”: {“2”: 4,“3”: 5,“5”: 3}}

Tu aurait eu
“pos” : [1,‘ab’,4]
Cette syntaxe est un tableau (Array), et là il aurai été possible de faire l’appel uniquement avec des valeur numérique 0,1,2,3,etc…
Mais ton JSON à une structure objet, donc les clé et valeurs dans ton JSON sont textuel.

La logique dont tu parle est purement Javascript, qui autorise plusieurs syntaxe, dans ton cas
reponse.pos.1.2
reponse[“pos”][“1”][“2”]