Question JSON

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

Re: Question JSON

Message par falsam »

Shadow a écrit :Le Json c'est la mouise à utiliser, ya des tonnes d'adresses mémoire à gérer, c'est vraiment le bordel
C'est compliqué parce que tu ne sais pas l’utiliser correctement peut être ?

:arrow: Le dernier code que tu présentes devient hors sujet. Il y a une gestion des maps mais plus de JSON. Je suppose que tu sauvegarderas la map au format JSON :wink:
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: Question JSON

Message par Shadow »

falsam a écrit :
Shadow a écrit :Le Json c'est la mouise à utiliser, ya des tonnes d'adresses mémoire à gérer, c'est vraiment le bordel
C'est compliqué parce que tu ne sais pas l’utiliser correctement peut être ?

:arrow: Le dernier code que tu présentes devient hors sujet. Il y a une gestion des maps mais plus de JSON. Je suppose que tu sauvegarderas la map au format JSON :wink:
Non je Json c'est pas simple à utiliser, j'ai dis pourquoi, bha je sais un peu l'utiliser mais pour le peu que j'en sais, c'est vraiment trop casse pieds, je veux faire plus simple.
Non rien de hors sujet en faite, oui, je sauvegarderais la map au format JSON, un truc comme ça oui.
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.
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Question JSON

Message par Shadow »

Bon voici la suite, petit à petit jy arrive:

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


; 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 "--------------------------------------------------------------------------------------------------------"

; ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

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
Pas encore d'enregistrement ni chargement dans un vraie Json mais ça va peut être venir.
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.
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Question JSON

Message par Shadow »

Dites moi, ExamineJSONMembers() examine tous les membres du Json en entier ou juste les membres de l'objet ?
Je coince un peu pour la suite... dans l'aide rien d'écris là dessus.

Imaginons que j'ai ce chemin-ci:

"Famille\Membres\Parents\Enfants"

"Famille" contient un dossier "Membres".
"Membres" contient un dossier "Parents".
"Parents" contient un dossier "Enfants".

Le Json ressemblerait à ceci:

Code : Tout sélectionner

{
  "Famille": {
      "Membres": {
          "Enfants": null,
          "Parents": {
              "Alice": null,
              "Luck" : null
            }
        }
    }
}
Quel méthode dois-je utiliser pour lister le Json et savoir si ce chemin existe ?: "Famille\Membres\Parents\Enfants"
C'est là ou ça va être compliqué ^^

Il faut que j'énumère tous les membres de chaque objets, bref...
C'est ç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.
Répondre