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