JSON et Array

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

JSON et Array

Message 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
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: JSON et Array

Message 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+
Dernière modification par PAPIPP le sam. 30/août/2014 16:55, modifié 1 fois.
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: JSON et Array

Message 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 :)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: JSON et Array

Message 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
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: JSON et Array

Message 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.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre