Page 1 sur 1

JSON et Array

Publié : sam. 30/août/2014 11:36
par falsam
En utilisant une des fonctionnalité de la bibliothéque JSON, ce code permet de retourner un tableau de sous-chaînes de caractères.

Code : Tout sélectionner

Enumeration
  #JSON
EndEnumeration

ParseJSON(#JSON, "[2, 4, 5, 0, 9]")
  
Dim MyArray(#JSON) 
ExtractJSONArray(JSONValue(#JSON), MyArray())
          
For i=0 To ArraySize(MyArray())
  Debug MyArray(i)
Next
Par contre ça ne fonctionne plus si au lieu de comporter des nombres, cette chaîne comporte des valeures alphanumérique.

Code : Tout sélectionner

Enumeration
  #JSON
EndEnumeration

ParseJSON(#JSON, "[Peche, Pomme, Poire, Abricot, Citron]")
  
Dim MyArray(#JSON) 
ExtractJSONArray(JSONValue(#JSON), MyArray())
          
For i=0 To ArraySize(MyArray())
  Debug MyArray(i)
Next

Re: JSON et Array

Publié : sam. 30/août/2014 16:32
par PAPIPP
Bonjour Falsam

Et pourtant voici un exemple qui fonctionne.
ComposeJSON(0) est une structure de type string
ces deux macros peuvent servir pour le debud _s(...) avec des doubles quotes pour chaque élément
Macro _q_t_
"
EndMacro
Macro _s (__S)
_q_t_#__S#=_q_t_+__S+" "
EndMacro

Code : Tout sélectionner


If CreateJSON(0)
    ValeurTableau = SetJSONArray(JSONValue(0))
    SetJSONString(AddJSONElement(ValeurTableau), "hello")
    SetJSONString(AddJSONElement(ValeurTableau), "le Monde")
    SetJSONString(AddJSONElement(ValeurTableau), "le Monde2")
    ;     Debug _s(ComposeJSON(0))
    Debug ComposeJSON(0)
  EndIf
  
  Debug "**** Maintenant en tableau ****"
Enumeration
  #JSON
EndEnumeration

ParseJSON(#JSON,ComposeJSON(0))
Dim MyArray.s(#JSON)
ExtractJSONArray(JSONValue(#JSON), MyArray())
         
For i=0 To ArraySize(MyArray())
  Debug MyArray(i)
Next
Autre exemple pas facile à coder le string$

Code : Tout sélectionner

Enumeration
  #JSON
EndEnumeration
string$="["+Chr(34)+"Peche"+Chr(34)+","+Chr(34)+"Pomme"+Chr(34)+","+Chr(34)+"Poire"+Chr(34)+","+Chr(34)+"Abricot"+Chr(34)+","+Chr(34)+"Citron"+Chr(34)+"]"
Debug string$
ParseJSON(#JSON, string$)
 
Dim MyArray.s(#JSON)
ExtractJSONArray(JSONValue(#JSON), MyArray())
         
For i=0 To ArraySize(MyArray())
  Debug MyArray(i)
Next

A+

Re: JSON et Array

Publié : sam. 30/août/2014 16:46
par falsam
Oui de cette maniére ça fonctionne mais je touvais plus séduisant d'envoyer une chaine de cette façon pour créer le tableau

Code : Tout sélectionner

ParseJSON(#JSON, "[Peche, Pomme, Poire, Abricot, Citron]")
ça fonctionne avec des valeurs numériques mais pas avec des valeurs alpha-numériques.

L'aide dit
Parse JSON data from a string. The JSONValue() function can be used to access the contained JSON value(s) after parsing
S'agissant d'un string, tu avoueras que c'est dommage de ne pas pouvoir passer ...... des strings :)

Re: JSON et Array

Publié : sam. 30/août/2014 16:57
par PAPIPP
@Falsam
on peut comme cela mais le string$ n'est pas facile à coder
Enumeration
#JSON
EndEnumeration
string$="["+Chr(34)+"Peche"+Chr(34)+","+Chr(34)+"Pomme"+Chr(34)+","+Chr(34)+"Poire"+Chr(34)+","+Chr(34)+"Abricot"+Chr(34)+","+Chr(34)+"Citron"+Chr(34)+"]"
Debug string$
ParseJSON(#JSON, string$)

Dim MyArray.s(#JSON)
ExtractJSONArray(JSONValue(#JSON), MyArray())

For i=0 To ArraySize(MyArray())
Debug MyArray(i)
Next

Re: JSON et Array

Publié : sam. 30/août/2014 17:02
par falsam
C'est une solution certes moins sexy, mais ça fonctionne. Merci PAPIPP pour cette réponse :)

En tout cas cette nouvelle fonctionnalité de Pure Basic est génial.