Json "je ne sais quoi"

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Json "je ne sais quoi"

Message par Shadow »

Salut, ce code permet de créer un Json sous forme d'une structure, facilement.
Le Patch n'est rien d'autre qu'une clef !
Entrez un Patch, une clef en gros, ensuite un Nom de Membre (Encore une clef) et mettez une valeur et voilà.
Ceci n'est qu'une première ébauche de se que je veux vraiment faire, la suite sera plus intéressante.
Le but final plus tard sera de créer entièrement un Json de toute pièces sans structures avec un vraie Patch à la Windows.
Genre: CreateSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s)

Bon bref, donc:

Point Positif: Créer, charge et sauvegarde un Json (sous forme structuré) très facilement.
Nom du Json >>> Clef (Patch) >>> Nom du Membre (Clef) >>> Valeur du Membre.

Point négatif: Sauvegarde toute la structure dans le Json.
Pas très flexible.
Assez limité.

Note: PB ma mâché tous le travail sur la save et load du Json !
J'ai pas fais grand chose en gros:

Code : Tout sélectionner

Structure JsonPatchData
  Value.s
EndStructure
Structure JsonPatch
  Map Member.JsonPatchData() ; Emplacement avec une clef au coeur du dossier (Patch).
EndStructure
Structure Json
  Map Patch.JsonPatch() ; Map qui sert pour le Patch (Adresse) des données.
EndStructure

Global NewMap SimplyJson.Json()

Procedure SimplyJsonEnumName(List JsonName.s())
  
  ForEach SimplyJson.Json()
    AddElement(JsonName.s())
    JsonName.s() = MapKey(SimplyJson.Json())
  Next
  
EndProcedure
Procedure.i SimplyJsonCount(JsonName.s)
  
  If FindMapElement(SimplyJson.Json(), JsonName.s)
    ProcedureReturn MapSize(SimplyJson.Json())
  Else
    ProcedureReturn 0
  EndIf
  
EndProcedure
Procedure.b SimplyJsonEnuPatch(JsonName.s, List JsonPath.s())
  
  If FindMapElement(SimplyJson.Json(), JsonName.s)
    
    ForEach SimplyJson.Json(JsonName.s)\Patch()
      AddElement(JsonPath.s())
      JsonPath.s() = MapKey(SimplyJson.Json(JsonName.s)\Patch())
    Next
    
    ProcedureReturn 1
    
  Else
    ProcedureReturn  0
    
  EndIf
  
EndProcedure
Procedure.i SimplyJsonCountPatch(JsonName.s)
  
  If FindMapElement(SimplyJson.Json(), JsonName.s)
    ProcedureReturn MapSize(SimplyJson.Json()\Patch())
    
  Else
    ProcedureReturn 0
    
  EndIf
  
EndProcedure
Procedure.b SimplyJsonEnumPatchMember(JsonName.s, Patch.s, List JsonPathMember.s())
  
  If FindMapElement(SimplyJson.Json(), JsonName.s)
    
    If FindMapElement(SimplyJson.Json()\Patch(), Patch.s)
      
      ForEach SimplyJson.Json(JsonName.s)\Patch()\Member()
        AddElement(JsonPathMember.s())
        JsonPathMember.s() = MapKey(SimplyJson.Json(JsonName.s)\Patch()\Member())
      Next
      
      ProcedureReturn 1
      
    Else
      ProcedureReturn 0
      
    EndIf
    
  Else
    ProcedureReturn 0
    
  EndIf

EndProcedure
Procedure.i SimplyJsonCountPatchMember(JsonName.s, Patch.s)
  
  If FindMapElement(SimplyJson.Json(), JsonName.s)
    
    If FindMapElement(SimplyJson.Json()\Patch(), Patch.s)
      ProcedureReturn MapSize(SimplyJson.Json()\Patch()\Member())
      
    Else
      ProcedureReturn 0
      
    EndIf
    
  Else
    ProcedureReturn 0
    
  EndIf
  
EndProcedure
Procedure.b SimplyJsonSave(FileName.s)
  
  If CreateJSON(0)
    InsertJSONMap(JSONValue(0), SimplyJson.Json())
    If SaveJSON(0, FileName.s, #PB_JSON_PrettyPrint)
      FreeJSON(0)
      ProcedureReturn 1
    Else
      ProcedureReturn 0
    EndIf
  Else
    ProcedureReturn 0
  EndIf
  
EndProcedure
Procedure.b SimplyJsonLoad(FileName.s)
  
  If LoadJSON(0, FileName.s)
    ExtractJSONMap(JSONValue(0), SimplyJson.Json())
    ProcedureReturn 1
  Else
    ProcedureReturn 0
  EndIf
  
EndProcedure
Procedure SimplyJsonFree()
  ClearMap(SimplyJson.Json())
EndProcedure

; Le programme Principal ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Global SimplyJsonName.s = "MyJson 1" ; Nom de notre Json.

; SimplyJson.Json("Le Nom du Json")\Patch("Adresse du Membre du Json")\Member("Nom du Membre du Json")\Value = "Valeur Alpha-numérique du Membre du Json"

SimplyJson.Json(SimplyJsonName.s)\Patch("Vehicules\Aérien")\Member("Montgolfière")\Value = "Ballon d'air chaud"
SimplyJson.Json(SimplyJsonName.s)\Patch("Vehicules\Aérien")\Member("Dirigeable")\Value = "Ballon d'hélium"
SimplyJson.Json(SimplyJsonName.s)\Patch("Vehicules\Aérien")\Member("DeltaPlane")\Value = "Aile sans hélice"
SimplyJson.Json(SimplyJsonName.s)\Patch("Vehicules\Aérien")\Member("ULM")\Value = "Ailes à hélice"
SimplyJson.Json(SimplyJsonName.s)\Patch("Vehicules\Aérien")\Member("Avion")\Value = "Ailes à hélice"
SimplyJson.Json(SimplyJsonName.s)\Patch("Vehicules\Aérien")\Member("Hélicopter")\Value = "Ailes pivotante"

SimplyJson.Json(SimplyJsonName.s)\Patch("Vehicules\Terrestre")\Member("Voiture")\Value = "Machine motorisé à 4 roues"
SimplyJson.Json(SimplyJsonName.s)\Patch("Vehicules\Terrestre")\Member("Moto")\Value = "Machine motorisé à 2 roues"
SimplyJson.Json(SimplyJsonName.s)\Patch("Vehicules\Terrestre")\Member("Vélo")\Value = "Machine à propulsion humaine"

SimplyJson.Json(SimplyJsonName.s)\Patch("Vehicules\Maritime")\Member("Zodiac ")\Value = "Coque semie rigide motorisé"
SimplyJson.Json(SimplyJsonName.s)\Patch("Vehicules\Maritime")\Member("Bateau")\Value = "Coque Rigide motorisé"
SimplyJson.Json(SimplyJsonName.s)\Patch("Vehicules\Maritime")\Member("Péniche")\Value = "Coque de transport fluvial"

; Enumère tous les Noms des Json contenue dans le SimplyJson:
NewList SimplyJsonName.s() ; Création d'une liste pour y mettre tous les noms des Json.
SimplyJsonEnumName(SimplyJsonName.s()) ; Enumère tous les Noms que contient le SimplyJson et l'enregistre dans notre liste SimplyJsonName.s().

; Enumère et affiche tous les Nom que contient notre liste: SimplyJsonName.s().
ForEach SimplyJsonName.s()
  Debug "Nom du Json: " + Chr(34) + SimplyJsonName.s() + Chr(34)
Next

Debug "--------------------------------------------------------------------------------------------------------"

; Enumère toutes les adresses du Json contenue dans le SimplyJson:
NewList SimplyJsonPatch.s() ; Création d'une liste pour y mettre toutes les adresses du Json.
SimplyJsonEnuPatch(SimplyJsonName.s, SimplyJsonPatch.s()) ; Enumère toutes les adresses que contient le SimplyJson et l'enregistre dans notre liste SimplyJsonPatch.s().

; Enumère et affiche tous les Nom que contient notre liste: SimplyJsonPatch.s().
ForEach SimplyJsonPatch.s()
  Debug "Adresses du Membre du Json: " + Chr(34) + SimplyJsonPatch.s() + Chr(34)
Next

Debug "--------------------------------------------------------------------------------------------------------"

; Enumère tous les Noms des Membre du Json contenue dans le SimplyJson:
NewList SimplyJsonPatchPatchMember.s() ; Création d'une liste pour y mettre tous les Noms des Membre du Json.
SimplyJsonEnumPatchMember(SimplyJsonName.s, "Vehicules\Aérien", SimplyJsonPatchPatchMember.s()) ; Enumère tous les Noms des Membre que contient le SimplyJson et l'enregistre dans notre liste SimplyJsonPatch.s().

; Enumère et affiche tous les Noms des Membre que contient notre liste: SimplyJsonPatchPatchMember.s().
ForEach SimplyJsonPatchPatchMember.s()
  Debug "Nom du Membre du Json: " + Chr(34) + SimplyJsonPatchPatchMember.s() + Chr(34)
Next

Debug "--------------------------------------------------------------------------------------------------------"
Debug "--------------------------------------------------------------------------------------------------------"


; Pour Enregistrer le Json dans un fichier Json.
Debug SimplyJsonSave("Mon Json.Json")

SimplyJsonFree() ; Ont éfface tous de la mémoire.

; Pour Charger le fichier Json.
; Ici les données vont être recharger en mémoire.
Debug SimplyJsonLoad("Mon Json.Json")


; Ont teste pour voir si les données ont bien été chargé:

NewList SimplyJsonName.s() ; Création d'une liste pour y mettre tous les noms des Json.
NewList SimplyJsonPatch.s() ; Création d'une liste pour y mettre toutes les adresses du Json.
NewList SimplyJsonPatchPatchMember.s() ; Création d'une liste pour y mettre tous les Noms des Membre du Json.

SimplyJsonEnumName(SimplyJsonName.s()) ; Enumère tous les Noms que contient le SimplyJson et l'enregistre dans notre liste SimplyJsonName.s().

; Enumère et affiche tous les Nom que contient notre liste: SimplyJsonName.s().
ForEach SimplyJsonName.s()
  
  Debug "Nom du Json: " + Chr(34) + SimplyJsonName.s() + Chr(34)
  SimplyJsonEnuPatch(SimplyJsonName.s(), SimplyJsonPatch.s()) ; Enumère toutes les adresses que contient le SimplyJson et l'enregistre dans notre liste SimplyJsonPatch.s().
  
  ; Enumère et affiche tous les Nom que contient notre liste: SimplyJsonPatch.s().
  ForEach SimplyJsonPatch.s()
    
    Debug ">>> Adresses du Membre du Json: " + Chr(34) + SimplyJsonPatch.s() + Chr(34)
    SimplyJsonEnumPatchMember(SimplyJsonName.s(), SimplyJsonPatch.s(), SimplyJsonPatchPatchMember.s()) ; Enumère tous les Noms des Membre que contient le SimplyJson et l'enregistre dans notre liste SimplyJsonPatch.s().
    
    ; Enumère et affiche tous les Noms des Membre que contient notre liste: SimplyJsonPatchPatchMember.s().
    ForEach SimplyJsonPatchPatchMember.s()
      Debug ">>>>>> Nom du Membre du Json: " + Chr(34) + SimplyJsonPatchPatchMember.s() + Chr(34)
    Next
    
    ClearList(SimplyJsonPatchPatchMember.s())
    
  Next
  
  ClearList(SimplyJsonPatch.s())
  
Next

Dernière modification par Shadow le sam. 14/mars/2020 17:47, modifié 3 fois.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
falsam
Messages : 7334
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Json pour les nul

Message par falsam »

Rien à voir avec JSON ! Le sujet traité n'a aucun rapport avec le titre.
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%
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Json pour les nul

Message par Shadow »

falsam a écrit :Rien à voir avec JSON ! Le sujet traité n'a aucun rapport avec le titre.
Ah oui vraiment ?

Tu dois te planter, ta essayé avant de cracher dans la soupe ?, surement que oui :wink:
Comme disais mon grand père, ont ne dis pas non avant d'avoir goutté :lol: :mrgreen:

Si il est vraie que PB me fais tous le travail sur la save et le load des structures dans le Json
et bien le reste c'est bien moi, et c'est plus simple comme ça....

Après ce qui me dérange là dedans c'est qu'il y à certains éléments qui me plaise pas trop:
Le nom des structures est dans la save ainsi que le nom du Json...

Alors va y explique moi en quoi c'est pas du Json... :??:
Bien que ma fois peut être à tu raison, c'est pas vraiment du Json... un peu quand même ? :?

C'est pas du Json car je ne manipule pas de Json, c'est PB qui fais
le travail de save et load de la structure dans le Json, ok...

Aide moi à comprendre pour que je m'améliore, que dois-je faire pour que se soit du Json ?
Les critiques constructives que diable :roll: :wink:
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
falsam
Messages : 7334
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Json pour les nul

Message par falsam »

Shadow a écrit :C'est pas du Json car je ne manipule pas de Json
Voila pourquoi ca n'a aucun rapport avec le sujet de ton topic.

JSON pour les nuls (oui tu as oublié un s dans ton titre) c'est expliquer comment fonctionne JSON et qu'est ce qu'on peut faire avec et ce qui est possible de faire avec PureBasic.

:idea: Pour info : https://www.purebasic.fr/french/viewtop ... 21&t=14511
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%
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Json pour les nul

Message par Shadow »

Ok bha tkt pas bientôt je pense que se serra de l'histoire ancienne ! :mrgreen: :wink:
Vais te le pondre moi ton Json pour les nulS :lol:

Oui ton sujet est très bien, je ne voudrais en rien te détrôner hein ne tkt pas pour ça ! :wink:
Au pire, renomme le sujet en je ne sais quoi....
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
falsam
Messages : 7334
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Json pour les nul

Message par falsam »

Je pense qu'il faut savoir utiliser les outils à bon escient. Faire de la POO avec PureBasic c'est fun mais c'est une aberration car PureBasic n'est pas un langage axé sur la POO (J'avais envie de taquiner mon ami microdevweb à qui je souhaite un bon anniversaire).

Faire du fichier indexé persistant avec JSON est aussi une aberration. Tu pourras sauvegarder la hiérarchie de ton JSON mais pas les index.

Et puisqu'on parle de hiérarchie, j'ai ajouté deux hiérarchies supplémentaires dans ton code et le résultat n'est pas bon.

Code : Tout sélectionner

Structure JsonPatchData
  Value.s
EndStructure
Structure JsonPatch
  Map Member.JsonPatchData() ; Emplacement avec une clef au coeur du dossier (Patch).
EndStructure
Structure Json
  Map Patch.JsonPatch() ; Map qui sert pour le Patch (Adresse) des données.
EndStructure

Global NewMap SimplyJson.Json()

Procedure SimplyJsonEnumName(List JsonName.s())
  
  ForEach SimplyJson.Json()
    AddElement(JsonName.s())
    JsonName.s() = MapKey(SimplyJson.Json())
  Next
  
EndProcedure
Procedure.i SimplyJsonCount(JsonName.s)
  
  If FindMapElement(SimplyJson.Json(), JsonName.s)
    ProcedureReturn MapSize(SimplyJson.Json())
  Else
    ProcedureReturn 0
  EndIf
  
EndProcedure
Procedure.b SimplyJsonEnuPatch(JsonName.s, List JsonPath.s())
  
  If FindMapElement(SimplyJson.Json(), JsonName.s)
    
    ForEach SimplyJson.Json(JsonName.s)\Patch()
      AddElement(JsonPath.s())
      JsonPath.s() = MapKey(SimplyJson.Json(JsonName.s)\Patch())
    Next
    
    ProcedureReturn 1
    
  Else
    ProcedureReturn  0
    
  EndIf
  
EndProcedure
Procedure.i SimplyJsonCountPatch(JsonName.s)
  
  If FindMapElement(SimplyJson.Json(), JsonName.s)
    ProcedureReturn MapSize(SimplyJson.Json()\Patch())
    
  Else
    ProcedureReturn 0
    
  EndIf
  
EndProcedure
Procedure.b SimplyJsonEnumPatchMember(JsonName.s, Patch.s, List JsonPathMember.s())
  
  If FindMapElement(SimplyJson.Json(), JsonName.s)
    
    If FindMapElement(SimplyJson.Json()\Patch(), Patch.s)
      
      ForEach SimplyJson.Json(JsonName.s)\Patch()\Member()
        AddElement(JsonPathMember.s())
        JsonPathMember.s() = MapKey(SimplyJson.Json(JsonName.s)\Patch()\Member())
      Next
      
      ProcedureReturn 1
      
    Else
      ProcedureReturn 0
      
    EndIf
    
  Else
    ProcedureReturn 0
    
  EndIf
  
EndProcedure
Procedure.i SimplyJsonCountPatchMember(JsonName.s, Patch.s)
  
  If FindMapElement(SimplyJson.Json(), JsonName.s)
    
    If FindMapElement(SimplyJson.Json()\Patch(), Patch.s)
      ProcedureReturn MapSize(SimplyJson.Json()\Patch()\Member())
      
    Else
      ProcedureReturn 0
      
    EndIf
    
  Else
    ProcedureReturn 0
    
  EndIf
  
EndProcedure
Procedure.b SimplyJsonSave(FileName.s)
  
  If CreateJSON(0)
    InsertJSONMap(JSONValue(0), SimplyJson.Json())
    If SaveJSON(0, FileName.s, #PB_JSON_PrettyPrint)
      FreeJSON(0)
      ProcedureReturn 1
    Else
      ProcedureReturn 0
    EndIf
  Else
    ProcedureReturn 0
  EndIf
  
EndProcedure
Procedure.b SimplyJsonLoad(FileName.s)
  
  If LoadJSON(0, FileName.s)
    ExtractJSONMap(JSONValue(0), SimplyJson.Json())
    ProcedureReturn 1
  Else
    ProcedureReturn 0
  EndIf
  
EndProcedure
Procedure SimplyJsonFree()
  ClearMap(SimplyJson.Json())
EndProcedure

; Le programme Principal ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Global SimplyJsonName.s = "MyJson 1" ; Nom de notre Json.

; SimplyJson.Json("Le Nom du Json")\Patch("Adresse du Membre du Json")\Member("Nom du Membre du Json")\Value = "Valeur Alpha-numérique du Membre du Json"

SimplyJson.Json(SimplyJsonName.s)\Patch("Vehicules")\Member("Aérien")\Value = "Véhicule Aérien"
SimplyJson.Json(SimplyJsonName.s)\Patch("Vehicules\Aérien")\Member("Montgolfière")\Value = "Ballon d'air chaud"
SimplyJson.Json(SimplyJsonName.s)\Patch("Vehicules\Aérien")\Member("Dirigeable")\Value = "Ballon d'hélium"
SimplyJson.Json(SimplyJsonName.s)\Patch("Vehicules\Aérien")\Member("DeltaPlane")\Value = "Aile sans hélice"
SimplyJson.Json(SimplyJsonName.s)\Patch("Vehicules\Aérien")\Member("ULM")\Value = "Ailes à hélice"
SimplyJson.Json(SimplyJsonName.s)\Patch("Vehicules\Aérien")\Member("Avion")\Value = "Ailes à hélice"
SimplyJson.Json(SimplyJsonName.s)\Patch("Vehicules\Aérien")\Member("Hélicopter")\Value = "Ailes pivotante"

SimplyJson.Json(SimplyJsonName.s)\Patch("Vehicules")\Member("Terrestre")\Value = "Véhicule Terrestre"
SimplyJson.Json(SimplyJsonName.s)\Patch("Vehicules\Terrestre")\Member("Voiture")\Value = "Machine motorisé à 4 roues"
SimplyJson.Json(SimplyJsonName.s)\Patch("Vehicules\Terrestre")\Member("Moto")\Value = "Machine motorisé à 2 roues"
SimplyJson.Json(SimplyJsonName.s)\Patch("Vehicules\Terrestre")\Member("Vélo")\Value = "Vélos"
SimplyJson.Json(SimplyJsonName.s)\Patch("Vehicules\Terrestre\Vélo")\Member("VAE")\Value = "Vélo assistance electrique"

SimplyJson.Json(SimplyJsonName.s)\Patch("Vehicules")\Member("Maritine")\Value = "Véhicule Maritine"
SimplyJson.Json(SimplyJsonName.s)\Patch("Vehicules\Maritime")\Member("Zodiac ")\Value = "Coque semie rigide motorisé"
SimplyJson.Json(SimplyJsonName.s)\Patch("Vehicules\Maritime")\Member("Bateau")\Value = "Coque Rigide motorisé"
SimplyJson.Json(SimplyJsonName.s)\Patch("Vehicules\Maritime")\Member("Péniche")\Value = "Coque de transport fluvial"

; Enumère tous les Noms des Json contenue dans le SimplyJson:
NewList SimplyJsonName.s() ; Création d'une liste pour y mettre tous les noms des Json.
SimplyJsonEnumName(SimplyJsonName.s()) ; Enumère tous les Noms que contient le SimplyJson et l'enregistre dans notre liste SimplyJsonName.s().

; Enumère et affiche tous les Nom que contient notre liste: SimplyJsonName.s().
ForEach SimplyJsonName.s()
  Debug "Nom du Json: " + Chr(34) + SimplyJsonName.s() + Chr(34)
Next

Debug "--------------------------------------------------------------------------------------------------------"

; Enumère toutes les adresses du Json contenue dans le SimplyJson:
NewList SimplyJsonPatch.s() ; Création d'une liste pour y mettre toutes les adresses du Json.
SimplyJsonEnuPatch(SimplyJsonName.s, SimplyJsonPatch.s()) ; Enumère toutes les adresses que contient le SimplyJson et l'enregistre dans notre liste SimplyJsonPatch.s().

; Enumère et affiche tous les Nom que contient notre liste: SimplyJsonPatch.s().
ForEach SimplyJsonPatch.s()
  Debug "Adresses du Membre du Json: " + Chr(34) + SimplyJsonPatch.s() + Chr(34)
Next

Debug "--------------------------------------------------------------------------------------------------------"

; Enumère tous les Noms des Membre du Json contenue dans le SimplyJson:
NewList SimplyJsonPatchPatchMember.s() ; Création d'une liste pour y mettre tous les Noms des Membre du Json.
SimplyJsonEnumPatchMember(SimplyJsonName.s, "Vehicules\Aérien", SimplyJsonPatchPatchMember.s()) ; Enumère tous les Noms des Membre que contient le SimplyJson et l'enregistre dans notre liste SimplyJsonPatch.s().

; Enumère et affiche tous les Noms des Membre que contient notre liste: SimplyJsonPatchPatchMember.s().
ForEach SimplyJsonPatchPatchMember.s()
  Debug "Nom du Membre du Json: " + Chr(34) + SimplyJsonPatchPatchMember.s() + Chr(34)
Next

Debug "--------------------------------------------------------------------------------------------------------"
Debug "--------------------------------------------------------------------------------------------------------"


; Pour Enregistrer le Json dans un fichier Json.
Debug SimplyJsonSave("Mon Json.Json")

SimplyJsonFree() ; Ont éfface tous de la mémoire.

; Pour Charger le fichier Json.
; Ici les données vont être recharger en mémoire.
Debug SimplyJsonLoad("Mon Json.Json")


; Ont teste pour voir si les données ont bien été chargé:

NewList SimplyJsonName.s() ; Création d'une liste pour y mettre tous les noms des Json.
NewList SimplyJsonPatch.s(); Création d'une liste pour y mettre toutes les adresses du Json.
NewList SimplyJsonPatchPatchMember.s() ; Création d'une liste pour y mettre tous les Noms des Membre du Json.

SimplyJsonEnumName(SimplyJsonName.s()) ; Enumère tous les Noms que contient le SimplyJson et l'enregistre dans notre liste SimplyJsonName.s().

; Enumère et affiche tous les Nom que contient notre liste: SimplyJsonName.s().
ForEach SimplyJsonName.s()
  
  Debug "Nom du Json: " + Chr(34) + SimplyJsonName.s() + Chr(34)
  SimplyJsonEnuPatch(SimplyJsonName.s(), SimplyJsonPatch.s()) ; Enumère toutes les adresses que contient le SimplyJson et l'enregistre dans notre liste SimplyJsonPatch.s().
  
  ; Enumère et affiche tous les Nom que contient notre liste: SimplyJsonPatch.s().
  ForEach SimplyJsonPatch.s()
    
    Debug ">>> Adresses du Membre du Json: " + Chr(34) + SimplyJsonPatch.s() + Chr(34)
    SimplyJsonEnumPatchMember(SimplyJsonName.s(), SimplyJsonPatch.s(), SimplyJsonPatchPatchMember.s()) ; Enumère tous les Noms des Membre que contient le SimplyJson et l'enregistre dans notre liste SimplyJsonPatch.s().
    
    ; Enumère et affiche tous les Noms des Membre que contient notre liste: SimplyJsonPatchPatchMember.s().
    ForEach SimplyJsonPatchPatchMember.s()
      Debug ">>>>>> Nom du Membre du Json: " + Chr(34) + SimplyJsonPatchPatchMember.s() + Chr(34)
    Next
    
    ClearList(SimplyJsonPatchPatchMember.s())
    
  Next
  
  ClearList(SimplyJsonPatch.s())
  
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%
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Json pour les nul

Message par Shadow »

Faire du fichier indexé persistant avec JSON est aussi une aberration. Tu pourras sauvegarder la hiérarchie de ton JSON mais pas les index.
Mais de toute façon avec le Json tu ne peux pas sauvegarder les Index, c'est des Map de toute façon et c'est pas sauvegarder.
J'aurais bien aimer aussi que ça sauvegarde les Index mais bon....
Et puisqu'on parle de hiérarchie, j'ai ajouté deux hiérarchies supplémentaires dans ton code et le résultat n'est pas bon.
Les résultats ont l'air bon si, l'ordre n'est pas bon surement mais les résultat ont l'air ok.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
SPH
Messages : 4973
Inscription : mer. 09/nov./2005 9:53

Re: Json pour les nul

Message par SPH »

falsam a écrit :JSON pour les nuls (oui tu as oublié un s dans ton titre)
Peut etre qu'il faut en fait virer les 2 "s" :lol:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Json pour les nul

Message par microdevweb »

Shadow a écrit : Mais de toute façon avec le Json tu ne peux pas sauvegarder les Index, c'est des Map de toute façon et c'est pas sauvegarder.
J'aurais bien aimer aussi que ça sauvegarde les Index mais bon....
.
Il faut comprendre comment fonctionne un index, principe fortement utilisé par les moteurs de base de données. En gros la variable est placée dans un arbre binaire avec sa valeur et sa position dans le fichier. Lorsque l’on parcourt l’index on saute vers la branche de gauche ou de droite selon le fait que la valeur de comparaison est plus grande ou plus petite que la valeur du nœud de l’arbre jusque trouvé ou non deux valeurs similaire. Ce système est très puissant pour une table 8x10^9 il faudra au maximum 18 itérations pour trouver le résultat.

J’ai dû m’amuser à cet exercice en créant une base de données en C (de toutes pièces) avec des tables de plus de 500.000 record. Sans ce système les recherches dans les tables liées pourraient prendre plusieurs minutes alors que la cela se fait en quelques millisecondes.

Falsam : je trouve que maintenant la poo avec pb devient de plus en plus simple :mrgreen:
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Json pour les nul

Message par Shadow »

Voici une autre approche, qui utilise du vraie Json cette fois-ci !
Mais jme suis cassé les dent dessus mais ça marche !

Je mettrais le code à jour au fur et à mesure.
Évidement c'est pas optimisé mais ça fonctionne.

Ici, créez un Json les doigt dans le nez, Json pour les nul quoi :mrgreen:
Hésitez pas à donner vos avis, aide etc...

Comment ça marche ?:

Pour créé un Json, ont le créer avec la commande CreateSimplyJson(SimplyJsonID.i)
Par exemple CreateSimplyJson(1)

Ensuite ont créé le Patch à la Windows genre: CreateSimplyJsonPatch(1, "Famille\Membres\Parent\Enfants")
Attention ici le Patch est un vraie Patch, pas comme l'autre code, ici le Patch n'est pas une clef mais une adresse !
Imaginez un dossier nommé "Famille", dans ce dossier il y aura un dossier nommé Membres
et dans ce dossier il y aura un dossier nommé Parent et pour finir, ce dossier aura un dossier nommé Enfants.

Le résulta serra dans le Json:

Code : Tout sélectionner

{
  "Famille": {
      "Membres": {
          "Parent": {
              "Enfants": null
            }
        }
    }
}
Ici c'est vraiment du Json pure et dur.
Il y à de nombreuse vérification sur la Patch et le Json, pour être sur que tous se passe bien.
Et aussi des commande de débogage pour afficher les erreurs éventuels.

Code : Tout sélectionner

; Créé par Dieppedalle David le 13/03/2020.
; Corrections fautes d'orthographe par Micoute.

; Liste pour les messages du debogage.
Global NewList SimplyJsonLogMessages.s()

; Affiche la liste de message du debogueur.
Procedure DebugSimplyJsonMessages(DebugMessagesID.i = -1)
  
  If DebugMessagesID.i = -1
    
    ForEach SimplyJsonLogMessages.s()
      Debug SimplyJsonLogMessages.s()
    Next
    
  ElseIf DebugMessagesID.i > 0
    SelectElement(SimplyJsonLogMessages.s(), DebugMessagesID.i - 1)
    Debug SimplyJsonLogMessages.s()
    
  EndIf
  
EndProcedure

; Efface la liste de message du debogueur.
Procedure ClearSimplyJsonMessages()
  ClearList(SimplyJsonLogMessages.s())
EndProcedure

; Création du Json.
Procedure.b CreateSimplyJson(SimplyJsonID.i, SimplyJsonCase.b = 1)
  
  If SimplyJsonID.i < 0
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = "CreateSimplyJson: Echec - le numéro d'identification (ID) du Json doit être supérieur à 0 !"
    
    ProcedureReturn 0
    
  ElseIf SimplyJsonID.i > 9999
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = "CreateSimplyJson: Echec - le numéro d'identification (ID) du Json doit être plus petit que 10 000 !"
    
    ProcedureReturn 0
    
  EndIf
  
  If Not IsJSON(SimplyJsonID.i)
    
    If SimplyJsonCase.b = 0
      MemoryAdress.i = CreateJSON(SimplyJsonID.i)
    Else
      MemoryAdress.i = CreateJSON(SimplyJsonID.i, #PB_JSON_NoCase)
    EndIf
    
    If MemoryAdress.i = 0
      
      AddElement(SimplyJsonLogMessages.s())
      SimplyJsonLogMessages.s() = "CreateSimplyJson: Echec - le Json '" + Str(SimplyJsonID.i) + "' n'as pas pu être créé, Erreur de mémoire !"
      
      ProcedureReturn 0
      
    EndIf
    
    If SetJSONObject(JSONValue(SimplyJsonID.i))
      
      AddElement(SimplyJsonLogMessages.s())
      SimplyJsonLogMessages.s() = "CreateSimplyJson: Succès - Le Json '" + Str(SimplyJsonID.i) + "' à été créé et initialisé avec succès !"
      
      ProcedureReturn 1
      
    Else
      
      AddElement(SimplyJsonLogMessages.s())
      SimplyJsonLogMessages.s() = "CreateSimplyJsonPatch: Echec - Le Json '" + Str(SimplyJsonID.i) + "' à été créé mais n'as pas pu être initialisé !"
      
      ProcedureReturn 0
      
    EndIf
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = "CreateSimplyJson: Echec - le Json '" + Str(SimplyJsonID.i) + "' existe déjà !"
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

; Vérifie que le Patch est correcte.
Procedure.b CheckSimplyJsonPatch(SimplyJsonPatch.s)
  
  If Mid(SimplyJsonPatch.s, 1, 1) = "\"
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = "CheckSimplyJsonPatch: Echec  - Le Patch ne peut pas commencer par un '\' !"
    
    ProcedureReturn 0
    
  ElseIf FindString(SimplyJsonPatch.s, "\\")
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = "CheckSimplyJsonPatch: Echec  - Le Patch ne peut pas contenir de double '\' !"
    
    ProcedureReturn 0
    
  ElseIf Mid(SimplyJsonPatch.s, Len(SimplyJsonPatch.s), 1) = "\"
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = "CheckSimplyJsonPatch: Echec  - Le Patch ne peut pas se terminer par un '\' !"
    
    ProcedureReturn 0
    
  ElseIf FindString(SimplyJsonPatch.s, Chr(34)) Or FindString(SimplyJsonPatch.s, "/") Or FindString(SimplyJsonPatch.s, ":") Or FindString(SimplyJsonPatch.s, "*") Or 
         FindString(SimplyJsonPatch.s, "?") Or FindString(SimplyJsonPatch.s, "<") Or FindString(SimplyJsonPatch.s, ">") Or FindString(SimplyJsonPatch.s, "|") 
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = "CheckSimplyJsonPatch: Echec  - Le Patch ne peut pas contenir les caractères suivants '/:*?" + Chr(34) + "<>|' !"
    
    ProcedureReturn 0
    
  ElseIf SimplyJsonPatch.s = ""
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = "CheckSimplyJsonPatch: Echec  - Le Patch ne peut pas être vide !"
    
    ProcedureReturn 0
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = "CheckSimplyJsonPatch: Succès  - Le Patch est correct !"
    
    ProcedureReturn 1
    
  EndIf
  
EndProcedure

; Vérifie que le Patch existe dans le Json.
Procedure.b FindSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s)
  
  If IsJSON(SimplyJsonID.i) 
    
    If CheckSimplyJsonPatch(SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AdresseMemoireValeurJson.i = JSONValue(SimplyJsonID.i)
      
      If AdresseMemoireValeurJson.i <> 0
        
        NombreSlash.i = CountString(SimplyJsonPatch.s, "\")
        
        If NombreSlash.i = 0
          
          MembreName.s = StringField(SimplyJsonPatch.s, 1, "\")
          Trouver.b = 0
          
          If JSONType(AdresseMemoireValeurJson.i) = 5
            
            If ExamineJSONMembers(AdresseMemoireValeurJson.i)
              While NextJSONMember(AdresseMemoireValeurJson.i)
                If JSONMemberKey(AdresseMemoireValeurJson.i) = MembreName.s
                  AdresseMemoireValeurJson.i = JSONMemberValue(AdresseMemoireValeurJson.i)
                  Trouver.b = 1
                  Break
                EndIf
              Wend
            EndIf
            
            If Trouver.b = 0
              
              AddElement(SimplyJsonLogMessages.s())
              SimplyJsonLogMessages.s() = "FindSimplyJsonPatch: Echec  - Le Membre '" + MembreName.s + "' est introuvable dans le Json !"
              
              ProcedureReturn 0
              
            EndIf
            
            AddElement(SimplyJsonLogMessages.s())
            SimplyJsonLogMessages.s() = "FindSimplyJsonPatch: Succès - Le Membre '" + SimplyJsonPatch.s + "' existe bien dans le Json !"
            
            ProcedureReturn 1
            
          Else
            
            AddElement(SimplyJsonLogMessages.s())
            SimplyJsonLogMessages.s() = "FindSimplyJsonPatch: Echec  - Le Json '" + Str(SimplyJsonID.i) + "' n'as pas de Membre !"
            
            ProcedureReturn 0
            
          EndIf
          
        ElseIf NombreSlash.i > 0
          
          If JSONType(AdresseMemoireValeurJson.i) = 5
            
            For Index.i = 0 To NombreSlash.i
              
              MembreName.s = StringField(SimplyJsonPatch.s, Index.i + 1, "\")
              Trouver.b = 0
              
              If JSONType(AdresseMemoireValeurJson.i) = 5 And ExamineJSONMembers(AdresseMemoireValeurJson.i)
                While NextJSONMember(AdresseMemoireValeurJson.i)
                  If JSONMemberKey(AdresseMemoireValeurJson.i) = MembreName.s
                    AdresseMemoireValeurJson.i = JSONMemberValue(AdresseMemoireValeurJson.i)
                    Trouver.b = 1
                    Break
                  EndIf
                Wend
              EndIf
              
              If Trouver.b = 0
                
                AddElement(SimplyJsonLogMessages.s())
                SimplyJsonLogMessages.s() = "FindSimplyJsonPatch: Echec  - Le Membre '" + MembreName.s + "' est introuvable dans le Json !"
                
                ProcedureReturn 0
                
              EndIf
              
            Next
            
            AddElement(SimplyJsonLogMessages.s())
            SimplyJsonLogMessages.s() = "FindSimplyJsonPatch: Succès - Le Patch '" + SimplyJsonPatch.s + "' existe bien dans le Json !"
            
            ProcedureReturn 1
            
          Else
            
            AddElement(SimplyJsonLogMessages.s())
            SimplyJsonLogMessages.s() = "FindSimplyJsonPatch: Echec  - Le Json '" + Str(SimplyJsonID.i) + "' n'as pas de Membre !"
            
            ProcedureReturn 0
            
          EndIf
          
        EndIf
        
      Else
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = "FindSimplyJsonPatch: Echec  - Le Json '" + Str(SimplyJsonID.i) + "' n'est pas initialisé !"
        
      EndIf
      
    Else
      
      AddElement(SimplyJsonLogMessages.s())
      SimplyJsonLogMessages.s() = "FindSimplyJsonPatch: Echec  - La recherche du Patch du Json '" + Str(SimplyJsonID.i) + "' a échoué, Patch invalide !"
      
      ProcedureReturn 0
      
    EndIf
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = "FindSimplyJsonPatch: Echec  - Le Json '" + Str(SimplyJsonID.i) + "' n'est pas initialisé !"
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

; Création des éléments dans le Json.
Procedure.b CreateSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s)
  
  If IsJSON(SimplyJsonID.i) 
    
    If CheckSimplyJsonPatch(SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      If Not FindSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s)
        DeleteElement(SimplyJsonLogMessages.s(), 1) 
        
        AdresseMemoireValeurJson.i = JSONValue(SimplyJsonID.i)
        
        If AdresseMemoireValeurJson.i <> 0
          
          NombreSlash.i = CountString(SimplyJsonPatch.s, "\")
          
          If NombreSlash.i = 0
            
            If AddJSONMember(AdresseMemoireValeurJson.i, SimplyJsonPatch.s)
              
              AddElement(SimplyJsonLogMessages.s())
              SimplyJsonLogMessages.s() = "CreateSimplyJsonPatch: Succès - Le Patch '" + SimplyJsonPatch.s + "' a été créé dans le Json '" + Str(SimplyJsonID.i) + "'."
              
              ProcedureReturn 1
              
            Else
              
              AddElement(SimplyJsonLogMessages.s())
              SimplyJsonLogMessages.s() = "CreateSimplyJsonPatch: Echec - Le Patch '" + SimplyJsonPatch.s + "' n'a pas pu être créé dans le Json '" + Str(SimplyJsonID.i) + "', Erreur de mémoire."
              
              ProcedureReturn 0
              
            EndIf
            
          ElseIf NombreSlash.i > 0
            
            For Index.i = 0 To NombreSlash.i
              
              MembreName.s = StringField(SimplyJsonPatch.s, Index.i + 1, "\")
              Trouver.b = 0
              
              If JSONType(AdresseMemoireValeurJson.i) = 5 ; La valeur est t'elle de type Objet ?
                
                If ExamineJSONMembers(AdresseMemoireValeurJson.i) ; Cherchont dans ces membres.
                  While NextJSONMember(AdresseMemoireValeurJson.i); Tans que ya des Membres.
                    If JSONMemberKey(AdresseMemoireValeurJson.i) = MembreName.s ; Si le Nom du Membre en court d'éxamination est le même que celui qu'on cherche.
                      AdresseMemoireValeurJson.i = JSONMemberValue(AdresseMemoireValeurJson.i)
                      Trouver.b = 1
                      Break
                    EndIf
                  Wend
                EndIf
                
                If Trouver.b = 1
                  Continue
                  
                ElseIf Trouver.b = 0
                  
                  If JSONType(AdresseMemoireValeurJson.i) <> 5
                    
                    If AddJSONMember(SetJSONObject(AdresseMemoireValeurJson.i), MembreName.s)
                      
                      AddElement(SimplyJsonLogMessages.s())
                      SimplyJsonLogMessages.s() = "CreateSimplyJsonPatch: Succès - Le Membre '" + MembreName.s + "' a été créé dans le Json '" + Str(SimplyJsonID.i) + "'."
                      AdresseMemoireValeurJson.i = JSONMemberValue(AdresseMemoireValeurJson)
                      Continue
                      
                    Else
                      
                      AddElement(SimplyJsonLogMessages.s())
                      SimplyJsonLogMessages.s() = "CreateSimplyJsonPatch: Echec - Le Membre '" + MembreName.s + "' n'a pas pu être créér dans le Json '" + Str(SimplyJsonID.i) + "', Erreur de mémoire."
                      
                      ProcedureReturn 0
                      
                    EndIf
                    
                  Else
                    
                    If AddJSONMember(AdresseMemoireValeurJson.i, MembreName.s)
                      
                      AddElement(SimplyJsonLogMessages.s())
                      SimplyJsonLogMessages.s() = "CreateSimplyJsonPatch: Succès - Le Membre '" + MembreName.s + "' a été créé dans le Json '" + Str(SimplyJsonID.i) + "'."
                      AdresseMemoireValeurJson.i = JSONMemberValue(AdresseMemoireValeurJson)
                      Continue
                      
                    Else
                      
                      AddElement(SimplyJsonLogMessages.s())
                      SimplyJsonLogMessages.s() = "CreateSimplyJsonPatch: Echec - Le Membre '" + MembreName.s + "' n'a pas pu être créé dans le Json '" + Str(SimplyJsonID.i) + "', Erreur de mémoire."
                      
                      ProcedureReturn 0
                      
                    EndIf
                    
                  EndIf
                  
                EndIf
                
              Else
                
                For Index2 = Index To NombreSlash.i
                  
                  MembreName.s = StringField(SimplyJsonPatch.s, Index2.i + 1, "\")
                  
                  If AddJSONMember(SetJSONObject(AdresseMemoireValeurJson.i), MembreName.s)
                    
                    AddElement(SimplyJsonLogMessages.s())
                    SimplyJsonLogMessages.s() = "CreateSimplyJsonPatch: Succès - Le Membre '" + MembreName.s + "' a été créé dans le Json '" + Str(SimplyJsonID.i) + "'."
                    AdresseMemoireValeurJson.i = JSONMemberValue(AdresseMemoireValeurJson.i)
                    Continue
                    
                  Else
                    
                    AddElement(SimplyJsonLogMessages.s())
                    SimplyJsonLogMessages.s() = "CreateSimplyJsonPatch: Echec - Le Membre '" + MembreName.s + "' n'a pas pu être créé dans le Json '" + Str(SimplyJsonID.i) + "', Erreur de mémoire."
                    
                    ProcedureReturn 0
                    
                  EndIf
                  
                Next
                
                Break
                
              EndIf
              
            Next
            
            AddElement(SimplyJsonLogMessages.s())
            SimplyJsonLogMessages.s() = "CreateSimplyJsonPatch: Succès - Le Patch '" + SimplyJsonPatch.s + "' à été créé avec succès dans le Json '" + Str(SimplyJsonID.i) + "' !"
            
            ProcedureReturn 1
            
            
          EndIf
          
        Else
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = "CreateSimplyJsonPatch: Echec - Le Json '" + Str(SimplyJsonID.i) + "' à retourné une erreur de mémoire !"
          
          ProcedureReturn 0
          
        EndIf
        
      Else
        
        DeleteElement(SimplyJsonLogMessages.s(), 1)
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = "CreateSimplyJson: Echec - le Patch '" + SimplyJsonPatch.s + "' existe déjà !"
        
        ProcedureReturn 0
        
      EndIf
      
    Else
      
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AddElement(SimplyJsonLogMessages.s())
      SimplyJsonLogMessages.s() = "CreateSimplyJsonPatch: Echec - La création du Patch '" + SimplyJsonPatch.s + "' du Json '" + Str(SimplyJsonID.i) + "' a échoué, Patch invalide !"
      
    EndIf
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = "CreateSimplyJsonPatch: Echec - Le Json '" + Str(SimplyJsonID.i) + "' n'existe pas !"
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

; Le programme Principal ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

SimplyJsonID.i = 1

If CreateSimplyJson(SimplyJsonID.i)
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Famille\Membres\Parent\Enfants")
    DebugSimplyJsonMessages()
  EndIf
  
  ClearSimplyJsonMessages()
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Famille")
    DebugSimplyJsonMessages()
  EndIf
  
  ClearSimplyJsonMessages()
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Famille\Membres")
    DebugSimplyJsonMessages()
  EndIf
  
  ClearSimplyJsonMessages()
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Famille\Membres\Parent")
    DebugSimplyJsonMessages()
  EndIf
  
  ClearSimplyJsonMessages()
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Jardin")
    DebugSimplyJsonMessages()
  EndIf
  
  ClearSimplyJsonMessages()
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Maison")
    DebugSimplyJsonMessages()
  EndIf
  
  ClearSimplyJsonMessages()
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Voiture")
    DebugSimplyJsonMessages()
  EndIf
  
  ClearSimplyJsonMessages()
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Famille\Liens")
    DebugSimplyJsonMessages()
  EndIf
  
  ClearSimplyJsonMessages()
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Famille\Liens\Parents")
    DebugSimplyJsonMessages()
  EndIf
  
  ClearSimplyJsonMessages()
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Famille\Liens\Enfants")
    DebugSimplyJsonMessages()
  EndIf
  
  ClearSimplyJsonMessages()
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Voiture\Marque\Renault\Laguna")
    DebugSimplyJsonMessages()
  EndIf
  
  ClearSimplyJsonMessages()
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Voiture\Marque\Peugeot\305")
    DebugSimplyJsonMessages()
  EndIf
  
  ClearSimplyJsonMessages()
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Voiture\Couleurs")
    DebugSimplyJsonMessages()
  EndIf
  
  ClearSimplyJsonMessages()
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Famille\Membres\Animaux\Chat\Titi")
    DebugSimplyJsonMessages()
  EndIf
  
  ClearSimplyJsonMessages()
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Famille\Membres\Animaux\Chat")
    DebugSimplyJsonMessages()
  EndIf
  
  ClearSimplyJsonMessages()
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Famille\Durand\Membres\Animaux\Chat\Titi")
    DebugSimplyJsonMessages()
  EndIf
  
  ClearSimplyJsonMessages()
  
  Debug "-------------------------------------------------------------------------"
  Debug ComposeJSON(SimplyJsonID.i, #PB_JSON_PrettyPrint)
  
Else
  DebugSimplyJsonMessages()
  ClearSimplyJsonMessages()
  
EndIf
Dernière modification par Shadow le sam. 14/mars/2020 18:00, modifié 1 fois.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Re: Json "je ne sais quoi"

Message par TazNormand »

@Shadow : à ta demande à Falsam, j'ai renommé ton topic en JSON "Je ne sais quoi".

Par contre, tu vas éditer ton premier topic et expliquer plus en détail à quoi sert ton programme par ce que franchement mettre ça :
Shadow a écrit :Bha voilà, il l'as fais :lol:
Bhaaa j'avoue que PB ma maché tous le travail sur la save et load du Json, les doits dans le nez (Merci PB !!!) :lol:

Bon voilà j'ai simplifié tous ça au maxi:
c'est pas une explication !!! Je ne te demande pas un tuto, mais au moins expliquer la finalité de ton programme : à quoi ça peut servir ?

Tu postes dans la section Débutant, mets-toi au niveau de ceux-ci (les débutants) plutôt que de balancer ton code direct.
Image
Image
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Json "je ne sais quoi"

Message par Shadow »

Toi tu arrive sur le feu, il manque pleins de messages avant ça, évidement que tu comprends rien !!! :roll:
Pas ma faute si ça efface les messages moi !
Mais oui je vais faire ça.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Re: Json "je ne sais quoi"

Message par TazNormand »

Et bien justement, tu vois je prends la "conversation" en cours et je ne comprends rien, donc imagine un débutant qui arrive sur ton topic...

Je ne te demande pas de faire une grande rédaction, mais juste un peu plus d'explications.
Image
Image
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Json "je ne sais quoi"

Message par Shadow »

C'est bon je l'es fais :)
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Répondre