PureBasic

Forums PureBasic
Nous sommes le Mer 18/Sep/2019 6:11

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 24 messages ]  Aller à la page Précédente  1, 2
Auteur Message
 Sujet du message: Re: JSON (JavaScript Object Notation)
MessagePosté: Mar 03/Juin/2014 18:16 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 14/Oct/2004 19:48
Messages: 1121
falsam a écrit:
PS : Oui je partage et je ne suis pas devant mon miroir en me disant Whaouu suis trop fort !

Ha, quand on a pas le physique... :mrgreen:
Merci quand même de partager, tant pis si tu n'y trouve aucun intérêt pour ton amour propre. :lol:
C'est gâcher un peu, du coup. :mrgreen:

Ca va j'ai compris l’intérêt cette fois !!
C'est pour les faignant et ça me va très bien ! :wink:

_________________
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 5.45LTS - 32 bits


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: JSON (JavaScript Object Notation)
MessagePosté: Sam 30/Aoû/2014 12:45 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 29/Juin/2011 14:11
Messages: 1655
Localisation: Belgique
Merci Falsam,

Je retravaille ma table personnalisée je vais ajouter l'insertion de record direct dans la table (en tuto d’ailleurs) et je pense inclure une fonction de sauvegarde directe en JSON.

_________________
Windows 10 64 bits PB: 5.70 ; 5.71 beta 2


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: JSON (JavaScript Object Notation)
MessagePosté: Dim 21/Sep/2014 23:06 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 08/Déc/2013 23:19
Messages: 603
Localisation: Hérault
Que représente exactement : "la valeur JSON" que l'on obtient avec JSONValue(#JSON) ?

ça a l'air d'être aussi un identifiant comme #JSON.

Dans la doc, y a quelques erreurs du type :

Code:
Arguments
#JSON : La valeur JSON


pour la fonction IsJSON(#JSON) par exemple.

_________________
Mon site dédié à ma passion pour la programmation :
http://majikeyric.free.fr


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: JSON (JavaScript Object Notation)
MessagePosté: Ven 12/Juin/2015 6:48 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 29/Juin/2011 14:11
Messages: 1655
Localisation: Belgique
Première fois que j'utilise json dans le cadres de mon projet, et c'est vraiment de la balle. Quel facilité pour sauvegardé,et rechargé la sauvegarde. Et en plus on donne l’extension de fichier que l'on veux. Vraiment trop bien :lol:

_________________
Windows 10 64 bits PB: 5.70 ; 5.71 beta 2


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: JSON (JavaScript Object Notation)
MessagePosté: Ven 03/Aoû/2018 17:03 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 25/Aoû/2004 15:14
Messages: 426
Localisation: Grenoble
Salut Falsam,

J'avais une liste de modules (structure contenant des entiers, des chaines et... une liste de part contenant elle-même des entiers et des chaines).
Je me voyais déjà devoir écrire un foreach imbriqué pour sauvegarder et relire mes modules (un module pouvant avoir entre 1 et 8 parties) 8O

Et là, je trouve ton exemple, bien plus clair que l'exemple officiel fourni !

Tout d'abord un grand merci, car cela donne ceci (en terme de code) :
Code:
Procedure   SaveModules(file$)
  If CreateJSON(0)
    InsertJSONList(JSONValue(0), VMBModule())
    SaveJSON(0, file$)
  EndIf
EndProcedure
Procedure   LoadModules(file$)
  If LoadJSON(0, file$)
    ExtractJSONList(JSONValue(0), VMBModule())
    WindowViewModule(1)
    Debug ComposeJSON(0, #PB_JSON_PrettyPrint)
  EndIf
EndProcedure

Impossible d'être plus concis et surtout, c'est PB qui gère la structure (qui est effectivement complexe) :
Code:
Structure VMBModuleMain                          ; Module Structure with a list of Module part
  modAdd.a
  modName.s
  modType.i
  modClass.s
  modPartNumber.i
  modLastScanDate.i
  modBuildYear.i
  modBuildWeek.i
  List modPart.VMBModulePart()
EndStructure

Structure VMB
  number.i                                     ; object unique ID
  ad.i                                         ; address (from 1 to 255)
  part.i                                       ; part (each Module has from 1 To 8 parts)
  type.s                                       ; type of module (ie. VMB1RY)
  class.s                                      ; class of module (TEMP, BUTTON, RELAY, BLIND...)
  nom.s
  ActiviteJour.i                               ; Durée d'activité par jour
  Etat.f                                       ; Status (OFF=0, ON or UP=1, BLINK or DOWN=2...) could be Temp value
  DateEtat.i                                   ; Record date when status changed
  EtatPrec.f                                   ; old status (can't be 0 : blind, dim, ...)
  TimSetting.l                                 ; default timer
  group.s                                      ; Group list separated by '|'
  scanned.b                                    ; Discovered but not scanned (boolean or 2 state : 0=discovered, 1=scanned)
EndStructure


Je vote pour que ton exemple soit présent dans la doc officielle de purebasic : JSON et les listes chaînées, c'est l'exemple à mettre en priorité ! Merci, un grand merci !
Je pensais galérer pour faire ces fonctions au moins une demi-journée (entre la compréhension, le codage, les tests, le débogage) et là, 5 mn et ça marche !!!

_________________
Purebasic 5.30 full sous Windows XP (x86) et Win7 (64 bits), Linux Debian. Orientation réseaux, domotique
http://golfy.olympe.in/Teo-Tea/


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: JSON (JavaScript Object Notation)
MessagePosté: Sam 03/Nov/2018 18:38 
Hors ligne

Inscription: Sam 08/Fév/2014 15:19
Messages: 1595
Je déterre ce topic pour ajouter un truc car j'ai passé deux jours à me taper la tête contre mon écran avec des objets imbriqués (chargé depuis un fichier) :oops: (suite à mes essais de WebService avec la nouvelle fonction)
Je commence à utiliser le format JSON (mieux vaut tard) mais impossible d'accéder aux objets imbriqués alors que tous les outils de débug indiquaient que la structure était OK :?: :cry: :?
Tous les exemples des forums fonctionnaient et pas mon code :roll: Quid ?

Deux jours après :idea: Relecture attentive de la doc, et j'ai trouvé ça dans les remarques sur LoadJSON()
« JSON est un format de données sensible à la casse. Cependant, dans certaines situations, telles que les structures de désérialisation avec ExtractJSONStructure() ou des commandes similaires, il peut être utile de traiter des objets JSON de façon insensible à la casse. L'option #PB_JSON_NoCase permet de traiter tous les clés des membres de l'objet comme insensible à la casse. »

Mais la casse de mes objets était bonne puisque j'ai tout fait en couper/coller :o

:arrow: Dans le doute, j'ajoute le paramètre #PB_JSON_NoCase
LoadJSON(#JSONFile, "Fichier.json", #PB_JSON_NoCase)
Et là, ça marche :P j'accède bien aux objets imbriqués

Mais le plus curieux est que je ne me sert pas de ExtractJSONStructure(), mais de ExtractJSONList() (car ma structure est une liste)

Cela dit enfin mon code fonctionne 8)
Si ça peut être utile...

:wink:


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: JSON (JavaScript Object Notation)
MessagePosté: Sam 03/Nov/2018 19:19 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Fév/2005 17:34
Messages: 4223
Localisation: Arras, France
Tu as essayé d'ouvrir ton fichier json dans un éditeur hexa? Parfois on a des soucis avec les codages ASCII/Unicode/... Peut-être que le décodeur aussi.
En tous cas, merci pour le tuyau, c'est le genre de bug qui est vraiment pénible à trouver.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: JSON (JavaScript Object Notation)
MessagePosté: Dim 04/Nov/2018 8:36 
Hors ligne

Inscription: Sam 08/Fév/2014 15:19
Messages: 1595
djes a écrit:
Tu as essayé d'ouvrir ton fichier json dans un éditeur hexa? Parfois on a des soucis avec les codages ASCII/Unicode/... Peut-être que le décodeur aussi.
Oui, je viens de tester divers encodages du fichier JSON

LoadJSON(#Json, Json_File$)

- ANSI : Objets OK mais objets imbriqués vides
- UTF-8 : Objets OK mais objets imbriqués vides
- UTF-8 + BOM : Pas lu

LoadJSON(#Json, Json_File$, #PB_JSON_NoCase)

- ANSI : Objets OK et objets imbriqués OK
- UTF-8 : Objets OK et objets imbriqués OK
- UTF-8 + BOM : Pas lu

Donc il est indifférent à l'ANSI ou UTF-8, par contre il refuse de lire le fichier s'il commence par un BOM
(exemple avec un UTF-8 + BOM en affichant le message d'erreur)
Debug "Erreur: " + JSONErrorMessage() + " (Ligne: " + JSONErrorLine() + " Position: " + JSONErrorPosition() + ")"
:arrow: Erreur: Unexpected character (Ligne: 1 Position: 1) (c'est le BOM)

:?: Ce qui était curieux c'est que les objets étaient bien lus, la structure imbriquée était créée, mais les objets imbriqués étaient vides.

Maintenant, il ne s'agit donc pas d'un bug, il faut juste le savoir, et il suffit d'insérer un ReadStringFormat() avant LoadJSON pour tester le fichier avant lecture.

:wink:


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: JSON (JavaScript Object Notation)
MessagePosté: Dim 04/Nov/2018 9:15 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Fév/2005 17:34
Messages: 4223
Localisation: Arras, France
C'est bon à savoir ! Merci pour tes tests


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 24 messages ]  Aller à la page Précédente  1, 2

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  
cron

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye