[résolu] JSON, accéder à une sous-liste?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
cowpowah
Messages : 41
Inscription : mer. 02/juin/2010 12:41

[résolu] JSON, accéder à une sous-liste?

Message par cowpowah »

Salut,

J'ai un JSON du type:

Code : Tout sélectionner

{
  "index1": valeur1,
  "index2": valeur2,
  "index3": [
    {
      "sousIndex1": "valeur3",
      "sousIndexA": "valeur4",
      "sousIndexB": "valeur5"
    },
    {
      "sousIndex2": "valeur6",
      "sousIndexA": "valeur7",
      "sousIndexB": "valeur8"
    }
  ]
}
Comment je peux faire pour accéder à un "sousIndex" précis?

(accessoirement, c'est quoi les []? une liste? un tableau?)

Merci :)
Dernière modification par cowpowah le mer. 12/sept./2018 22:21, modifié 1 fois.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Re: JSON, accéder à une sous-liste?

Message par Flype »

La réponse à ta question dépend totalement de la structure de ton fichier json.

Telle que c'est construit, tu peux faire comme çà :

Code : Tout sélectionner

Procedure.s getSubItem(id, name.s, index.l, subname.s)
  Protected value.s
  Protected object.i = JSONValue(id)
  If object
    object = GetJSONMember(object, name)
    If object
      object = GetJSONElement(object, index)
      If object
        object = GetJSONMember(object, subname)
        If object
          value = GetJSONString(object)
        EndIf
      EndIf
    EndIf
  EndIf
  ProcedureReturn value
EndProcedure

json = LoadJSON(#PB_Any, "test.json")

If json
  Debug getSubItem(json, "index3", 0, "sousIndexA")
  Debug getSubItem(json, "index3", 1, "sousIndexA")
  Debug getSubItem(json, "index3", 0, "sousIndexB")
  Debug getSubItem(json, "index3", 1, "sousIndexB")
  FreeJSON(json)
EndIf

Et oui, les balises [ ] sont utilisées pour définir un tableau, d'où l'argument "index" dans la fonction getSubItem(), car dans ce cas ce n'est accessible que via un index de tableau (et non une clef, dans ton cas).


Ceci dit, il y a probablement mieux à faire selon le contexte d'utilisation.
Image
cowpowah
Messages : 41
Inscription : mer. 02/juin/2010 12:41

Re: JSON, accéder à une sous-liste?

Message par cowpowah »

Ok d'accord! Je comprenais pas bien l'utilisation de GetJSONMember et GetJSONElement, avec ton exemple j'ai tout pigé :wink:

Après oui, je vais faire ma tambouille avec une boucle parce que j'ai plus de 150 sousIndex...

Un grand merci, Flype! :D
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: JSON, accéder à une sous-liste?

Message par Marc56 »

cowpowah a écrit :j'ai plus de 150 sousIndex...
Se pose la question de l'adéquation du format JSON dans ce cas ?

:)
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Re: [résolu] JSON, accéder à une sous-liste?

Message par Flype »

@cowpowah

Parfait, content d'avoir éclairé une lanterne :)

@Marc56

Oui en effet, ceci dit ca dépend du contexte,

150 sous items c'est rien du tout pour un processeur (sauf si c'est appelé 50 fois par secondes, par exemple),

et surtout peut être le fichier JSON est-il, ici, une API dont le contenu (la structure) est imposé au codeur.
Image
cowpowah
Messages : 41
Inscription : mer. 02/juin/2010 12:41

Re: [résolu] JSON, accéder à une sous-liste?

Message par cowpowah »

Effectivement, c'est pour une API (bien vu Flype ;) ) donc pas vraiment le choix...
Répondre