Page 1 sur 1

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

Publié : mar. 11/sept./2018 12:58
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 :)

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

Publié : mar. 11/sept./2018 20:27
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.

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

Publié : mer. 12/sept./2018 22:21
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

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

Publié : jeu. 13/sept./2018 16:00
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 ?

:)

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

Publié : jeu. 13/sept./2018 16:51
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.

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

Publié : sam. 15/sept./2018 20:32
par cowpowah
Effectivement, c'est pour une API (bien vu Flype ;) ) donc pas vraiment le choix...