SimplyJson

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

SimplyJson

Message par Shadow »

Voici un petit programme pour faire du Json facilement.
Certes, pas optimiser, et limité mais pour un début c'est déjà pas si mal :)

Partie 1:

Code : Tout sélectionner

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

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

; Pour se souvenir de l'option 'Case' lors de la création du Json.
Global SimplyJsonCase.b

; 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
  
  ClearList(SimplyJsonLogMessages.s())
  
EndProcedure

; Création du Json.
Procedure.b CreateSimplyJson(SimplyJsonID.i, SimplyJsonCase.b = 1, NumeroLigne.i = 0)
  
  ClearList(SimplyJsonLogMessages.s())
  
  If SimplyJsonID.i < 0
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - 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() = Str(NumeroLigne.i) + "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() = Str(NumeroLigne.i) + "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() = Str(NumeroLigne.i) + "CreateSimplyJson: Succès - Le Json '" + Str(SimplyJsonID.i) + "' à été créé et initialisé avec succès !"
      
      ProcedureReturn 1
      
    Else
      
      AddElement(SimplyJsonLogMessages.s())
      SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + "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() = Str(NumeroLigne.i) + "CreateSimplyJson: Echec - Le Json '" + Str(SimplyJsonID.i) + "' existe déjà !"
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

; Efface entièrement le Json, à utiliser avec grande précaution car le Json sera completement effacé.
Procedure.b ClearSimplyJson(SimplyJsonID.i, NumeroLigne.i = 0)
  
  ClearList(SimplyJsonLogMessages.s())
  
  If IsJSON(SimplyJsonID.i) 
    
    AdresseMemoireValeurJson.i = JSONValue(SimplyJsonID.i)
    
    If AdresseMemoireValeurJson.i <> 0
      
      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() = Str(NumeroLigne.i) + "ClearSimplyJson: Echec - Le Json '" + Str(SimplyJsonID.i) + "' n'as pas pu être éffacé, Erreur de mémoire !"
        
        ProcedureReturn 0
        
      EndIf
      
      If SetJSONObject(JSONValue(SimplyJsonID.i))
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + "ClearSimplyJson: Succès - Le Json '" + Str(SimplyJsonID.i) + "' à été éffacé avec succès !"
        
        ProcedureReturn 1
        
      Else
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + "ClearSimplyJson: Echec - Le Json '" + Str(SimplyJsonID.i) + "' n'as pas pu être éffacé, Erreur de mémoire !"
        
        ProcedureReturn 0
        
      EndIf
      
      
    Else
      
      AddElement(SimplyJsonLogMessages.s())
      SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ClearSimplyJson: Echec  - Le Json n'as pas pu être éffacé, erreur de mémoire !"
      
      ProcedureReturn 0
      
    EndIf
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ClearSimplyJson: Echec - Le Json '" + Str(SimplyJsonID.i) + "' n'existe pas !"
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

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

; Vérifie que le Patch existe dans le Json.
Procedure.i FindSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s, NumeroLigne.i = 0)
  
  ClearList(SimplyJsonLogMessages.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() = Str(NumeroLigne.i) + " - FindSimplyJsonPatch: Echec  - Le Membre '" + MembreName.s + "' est introuvable dans le Json !"
              
              ProcedureReturn 0
              
            EndIf
            
            AddElement(SimplyJsonLogMessages.s())
            SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - FindSimplyJsonPatch: Succès - Le Membre '" + SimplyJsonPatch.s + "' existe bien dans le Json !"
            
            ProcedureReturn AdresseMemoireValeurJson.i
            
          Else
            
            AddElement(SimplyJsonLogMessages.s())
            SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - 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() = Str(NumeroLigne.i) + " - FindSimplyJsonPatch: Echec  - Le Membre '" + MembreName.s + "' est introuvable dans le Json !"
                
                ProcedureReturn 0
                
              EndIf
              
            Next
            
            AddElement(SimplyJsonLogMessages.s())
            SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - FindSimplyJsonPatch: Succès - Le Patch '" + SimplyJsonPatch.s + "' existe bien dans le Json !"
            
            ProcedureReturn AdresseMemoireValeurJson
            
          Else
            
            AddElement(SimplyJsonLogMessages.s())
            SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - FindSimplyJsonPatch: Echec  - Le Json '" + Str(SimplyJsonID.i) + "' n'as pas de Membre !"
            
            ProcedureReturn 0
            
          EndIf
          
        EndIf
        
      Else
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - FindSimplyJsonPatch: Echec  - Le Json '" + Str(SimplyJsonID.i) + "' n'est pas initialisé !"
        
        ProcedureReturn 0
        
      EndIf
      
    Else
      
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AddElement(SimplyJsonLogMessages.s())
      SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - FindSimplyJsonPatch: Echec  - La recherche du Patch du Json '" + Str(SimplyJsonID.i) + "' a échoué, Patch invalide !"
      
      ProcedureReturn 0
      
    EndIf
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - 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, NumeroLigne.i = 0)
  
  ClearList(SimplyJsonLogMessages.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() = Str(NumeroLigne.i) + " - CreateSimplyJsonPatch: Succès - Le Patch '" + SimplyJsonPatch.s + "' a été créé dans le Json '" + Str(SimplyJsonID.i) + "'."
              
              ProcedureReturn 1
              
            Else
              
              AddElement(SimplyJsonLogMessages.s())
              SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - 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() = Str(NumeroLigne.i) + " - 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() = Str(NumeroLigne.i) + " - 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() = Str(NumeroLigne.i) + " - 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() = Str(NumeroLigne.i) + " - 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() = Str(NumeroLigne.i) + " - 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() = Str(NumeroLigne.i) + " - 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() = Str(NumeroLigne.i) + " - 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() = Str(NumeroLigne.i) + " - 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() = Str(NumeroLigne.i) + " - CreateSimplyJsonPatch: Echec - le Patch '" + SimplyJsonPatch.s + "' existe déjà !"
        
        ProcedureReturn 0
        
      EndIf
      
    Else
      
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AddElement(SimplyJsonLogMessages.s())
      SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - CreateSimplyJsonPatch: Echec - La création du Patch '" + SimplyJsonPatch.s + "' du Json '" + Str(SimplyJsonID.i) + "' a échoué, Patch invalide !"
      
      ProcedureReturn 0
      
    EndIf
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - CreateSimplyJsonPatch: Echec - Le Json '" + Str(SimplyJsonID.i) + "' n'existe pas !"
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

; Efface entièrement un patch dans le Json ainsi que ses valeurs, à utiliser avec précaution car efface tout le Patch.
Procedure.b ClearSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s, NumeroLigne.i = 0)
  
  ClearList(SimplyJsonLogMessages.s())
  
  If IsJSON(SimplyJsonID.i) 
    
    If CheckSimplyJsonPatch(SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AdresseMemoireValeurJson.i = FindSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      If AdresseMemoireValeurJson.i <> 0
        
        AdresseMemoireValeurJson.i = SetJSONNull(AdresseMemoireValeurJson.i)
        
        If AdresseMemoireValeurJson.i = 0
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ClearSimplyJsonPatch: Succès - Le Patch '" + SimplyJsonPatch.s + "' a été effacé !"
          
          ProcedureReturn 1
          
        EndIf
        
      Else
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ClearSimplyJsonPatch: Echec - Le Patch '" + SimplyJsonPatch.s + "' n'existe pas !"
        
        ProcedureReturn 0
        
      EndIf
      
    Else
      
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AddElement(SimplyJsonLogMessages.s())
      SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + "ClearSimplyJsonPatch - : Echec - le Patch '" + SimplyJsonPatch.s + "' est invalide !"
      
      ProcedureReturn 0
      
    EndIf
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ClearSimplyJsonPatch: Echec - Le Json '" + Str(SimplyJsonID.i) + "' n'existe pas !"
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

; Défini une valeur (Sous forme de chaîne de caractères) au Patch.
Procedure.b SetSimplyJsonPatchValue(SimplyJsonID.i, SimplyJsonPatch.s, Value.s, NumeroLigne.i = 0)
  
  ClearList(SimplyJsonLogMessages.s())
  
  If IsJSON(SimplyJsonID.i) 
    
    If CheckSimplyJsonPatch(SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AdresseMemoireValeurJson.i = FindSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      If AdresseMemoireValeurJson.i <> 0
        
        If JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_String And GetJSONString(AdresseMemoireValeurJson.i) > ""
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - SetSimplyJsonPatchValue: Avertissement - La valeur du Patch '" + SimplyJsonPatch.s + "' était '" + GetJSONString(AdresseMemoireValeurJson.i) + "' et à été remplacé par '" + Value.s + "' !"
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Array
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - SetSimplyJsonPatchValue: Echec - Le Patch '" + SimplyJsonPatch.s + "' contient un Tableau, supprimez avant le tableau avant d'y mettre une valeur !"
          
          ProcedureReturn 0
          
        EndIf
        
        SetJSONString(AdresseMemoireValeurJson.i, Value.s)
        
        ProcedureReturn 1
        
      Else
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - SetSimplyJsonPatchValue: Echec - Le Patch '" + SimplyJsonPatch.s + "' n'existe pas !"
        
        ProcedureReturn 0
        
      EndIf
      
    Else
      
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AddElement(SimplyJsonLogMessages.s())
      SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - SetSimplyJsonPatchValue: Echec - L'attribution de la valeur au Patch '" + SimplyJsonPatch.s + "' du Json '" + Str(SimplyJsonID.i) + "' a échoué, Patch invalide !"
      
      ProcedureReturn 0
      
    EndIf
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - SetSimplyJsonPatchValue: Echec - Le Json '" + Str(SimplyJsonID.i) + "' n'existe pas !"
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

; Retourne la valeur (Sous forme de chaîne de caractères) du Patch.
Procedure.s GetSimplyJsonPatchValue(SimplyJsonID.i, SimplyJsonPatch.s, NumeroLigne.i = 0)
  
  ClearList(SimplyJsonLogMessages.s())
  
  If IsJSON(SimplyJsonID.i) 
    
    If CheckSimplyJsonPatch(SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AdresseMemoireValeurJson.i = FindSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      If AdresseMemoireValeurJson.i <> 0
        
        If JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_String
          
          ProcedureReturn GetJSONString(AdresseMemoireValeurJson.i)
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Array
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - GetSimplyJsonPatchValue: Echec - le Patch '" + SimplyJsonPatch.s + "' contient un Tableau, pas une valeur !"
          
          ProcedureReturn ""
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = 0
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - GetSimplyJsonPatchValue: Echec - le Patch '" + SimplyJsonPatch.s + "' n'a pas de valeur (Null) !"
          
          ProcedureReturn ""
          
        EndIf
        
      Else
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - GetSimplyJsonPatchValue: Echec - le Patch '" + SimplyJsonPatch.s + "' n'existe pas !"
        
        ProcedureReturn ""
        
      EndIf
      
    Else
      
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AddElement(SimplyJsonLogMessages.s())
      SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - GetSimplyJsonPatchValue: Echec - L'attribution de la valeur au Patch '" + SimplyJsonPatch.s + "' du Json '" + Str(SimplyJsonID.i) + "' a échoué, Patch invalide !"
      
      ProcedureReturn ""
      
    EndIf
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - GetSimplyJsonPatchValue: Echec - Le Json '" + Str(SimplyJsonID.i) + "' n'existe pas !"
    
    ProcedureReturn ""
    
  EndIf
  
EndProcedure

; Création d'un Tableau dans un Patch.
Procedure.b CreateSimplyJsonPatchArray(SimplyJsonID.i, SimplyJsonPatch.s, NumeroLigne.i = 0)
  
  ClearList(SimplyJsonLogMessages.s())
  
  If IsJSON(SimplyJsonID.i) 
    
    If CheckSimplyJsonPatch(SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AdresseMemoireValeurJson.i = FindSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      If AdresseMemoireValeurJson.i <> 0
        
        If JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Array
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - CreateSimplyJsonPatchArray: Echec  - La création du Tableau à échoué, ce Patch contient déjà un Tableau !"
          
          ProcedureReturn 0
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_String And GetJSONString(AdresseMemoireValeurJson.i) > ""
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - CreateSimplyJsonPatchArray: Echec - Le Patch '" + SimplyJsonPatch.s + "' contient une valeur, mettez la valeur à " + Chr(34) + Chr(34) + " avant d'y mettre un Tableau !"
          
          ProcedureReturn 0
          
        EndIf
        
        AdresseMemoireValeurJson.i = SetJSONArray(AdresseMemoireValeurJson.i)
        
        If AdresseMemoireValeurJson.i <> 0
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - CreateSimplyJsonPatchArray: Succès  - Le Tableau à été créé avec succès !"
          
          ProcedureReturn 1
          
        Else
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - CreateSimplyJsonPatchArray: Echec  - La création du Tableau à échoué, erreur de mémoire !"
          
          ProcedureReturn 0
          
        EndIf
        
      Else
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - CreateSimplyJsonPatchArray: Echec - le Patch '" + SimplyJsonPatch.s + "' n'existe pas !"
        
        ProcedureReturn 0
        
      EndIf
      
        DeleteElement(SimplyJsonLogMessages.s(), 1)
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + "CreateSimplyJsonPatchArray - : Echec - le Patch '" + SimplyJsonPatch.s + "' est invalide !"
        
        ProcedureReturn 0
      
    EndIf
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - CreateSimplyJsonPatchArray: Echec - Le Json '" + Str(SimplyJsonID.i) + "' n'existe pas !"
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

; Ajout d'un nouvel élément ainsi qu'une valeur dans un Tableau à la fin dans un Patch.
Procedure.b AddSimplyJsonPatchArrayElement(SimplyJsonID.i, SimplyJsonPatch.s, Value.s, NumeroLigne.i = 0)
  
  ClearList(SimplyJsonLogMessages.s())
  
  If IsJSON(SimplyJsonID.i) 
    
    If CheckSimplyJsonPatch(SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AdresseMemoireValeurJson.i = FindSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      If AdresseMemoireValeurJson.i <> 0
        
        If JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Array
          
          AdresseMemoireValeurJson.i = AddJSONElement(AdresseMemoireValeurJson.i)
          
          If AdresseMemoireValeurJson.i <> 0
            
            SetJSONString(AdresseMemoireValeurJson.i, Value.s)
            
            AddElement(SimplyJsonLogMessages.s())
            SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - AddSimplyJsonPatchArrayElement: Succès - L'élément '" + Value.s + "' a été ajouté au Tableau avec succès !"
            
            ProcedureReturn 1
            
          Else
            
            AddElement(SimplyJsonLogMessages.s())
            SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - AddSimplyJsonPatchArrayElement: Echec - Impossible d'ajouter un élément au Tableau !"
            
            ProcedureReturn 0
            
          EndIf
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_String
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - AddSimplyJsonPatchArrayElement: Echec - Le Patch '" + SimplyJsonPatch.s + "' contient une valeur, pas un Tableau !"
          
          ProcedureReturn 0
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Null
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - AddSimplyJsonPatchArrayElement: Echec - Le Patch '" + SimplyJsonPatch.s + "' ne contient pas de valeur ni de Tableau (Null) !"
          
          ProcedureReturn 0
          
        Else
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - AddSimplyJsonPatchArrayElement: Echec - Le Patch '" + SimplyJsonPatch.s + "' ne contient pas de Tableau !"
          
          ProcedureReturn 0
          
        EndIf
        
      Else
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - AddSimplyJsonPatchArrayElement: Echec - le Patch '" + SimplyJsonPatch.s + "' n'existe pas !"
        
        ProcedureReturn 0
        
      EndIf
    
        DeleteElement(SimplyJsonLogMessages.s(), 1)
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + "AddSimplyJsonPatchArrayElement - : Echec - le Patch '" + SimplyJsonPatch.s + "' est invalide !"
        
        ProcedureReturn 0
      
    EndIf
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - AddSimplyJsonPatchArrayElement: Echec - Le Json '" + Str(SimplyJsonID.i) + "' n'existe pas !"
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

; Change la valeur d'un élément dans un Tableau dans un Patch à l'emplacement désiré, le premier élément commence à 0.
Procedure.b SetSimplyJsonPatchArrayElement(SimplyJsonID.i, SimplyJsonPatch.s, NumeroElement.i, Value.s, NumeroLigne.i = 0)
  
  ClearList(SimplyJsonLogMessages.s())
  
  If IsJSON(SimplyJsonID.i) 
    
    If CheckSimplyJsonPatch(SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AdresseMemoireValeurJson.i = FindSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      If AdresseMemoireValeurJson.i <> 0
        
        If JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Array
          
          If NumeroElement.i < 0
            
            AddElement(SimplyJsonLogMessages.s())
            SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - SetSimplyJsonPatchArrayElement: Echec - Impossible de changé l'élément n° " + Str(NumeroElement.i) + " au Tableau !, 'NumeroElement' doit être superieur à 0."
            
            ProcedureReturn 0
            
          ElseIf NumeroElement.i > JSONArraySize(AdresseMemoireValeurJson.i) - 1
            
            AddElement(SimplyJsonLogMessages.s())
            SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - SetSimplyJsonPatchArrayElement: Echec - Impossible de changé l'élément n° " + Str(NumeroElement.i) + " au Tableau !, 'NumeroElement' doit être superieur à 0 et plus petit ou égale au nombre d'élément dans le tableau !"
            
            ProcedureReturn 0
            
          EndIf
          
          NewList ListTemps.s()
          ClearList(ListTemps.s())
          
          For I = 0 To JSONArraySize(AdresseMemoireValeurJson.i) - 1
            
            If I = NumeroElement.i
              
              AddElement(ListTemps.s())
              ListTemps.s() = Value.s
              
              Continue
              
            EndIf
            
            AddElement(ListTemps.s())
            
            If JSONType(GetJSONElement(AdresseMemoireValeurJson.i, I)) <> 0
              ListTemps.s() = GetJSONString(GetJSONElement(AdresseMemoireValeurJson.i, I))
              
            Else
              ListTemps.s() = "NULL"
              
            EndIf
            
          Next
          
          ClearJSONElements(AdresseMemoireValeurJson.i)
          
          ForEach ListTemps.s()
            
            Test.i = AddJSONElement(AdresseMemoireValeurJson.i)
            
            If Test.i <> 0
              
              If ListTemps.s() <> "NULL"
                SetJSONString(Test.i, ListTemps.s())
              Else
                SetJSONNull(Test.i)
              EndIf
              
            Else
              
              AddElement(SimplyJsonLogMessages.s())
              SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - SetSimplyJsonPatchArrayElement: Echec - Impossible de changé l'élément du Tableau, erreur de mémoire !"
              
              ProcedureReturn 0
              
            EndIf
            
          Next
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - SetSimplyJsonPatchArrayElement: Succès - L'élément '" + Str(NumeroElement.i) + "' a été changé par '" + Value.s + "' du Tableau avec succès !"
          
          ProcedureReturn 1
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_String
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - SetSimplyJsonPatchArrayElement: Echec - Le Patch '" + SimplyJsonPatch.s + "' contient une valeur, pas un Tableau !"
          
          ProcedureReturn 0
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Null
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - SetSimplyJsonPatchArrayElement: Echec - Le Patch '" + SimplyJsonPatch.s + "' ne contient pas de valeur ni de Tableau (Null) !"
          
          ProcedureReturn 0
          
        Else
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - SetSimplyJsonPatchArrayElement: Echec - Le Patch '" + SimplyJsonPatch.s + "' ne contient pas de Tableau !"
          
          ProcedureReturn 0
          
        EndIf
        
      Else
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - SetSimplyJsonPatchArrayElement: Echec - le Patch '" + SimplyJsonPatch.s + "' n'existe pas !"
        
        ProcedureReturn 0
        
      EndIf
      
        DeleteElement(SimplyJsonLogMessages.s(), 1)
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + "SetSimplyJsonPatchArrayElement - : Echec - le Patch '" + SimplyJsonPatch.s + "' est invalide !"
        
        ProcedureReturn 0
        
    EndIf
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - SetSimplyJsonPatchArrayElement: Echec - Le Json '" + Str(SimplyJsonID.i) + "' n'existe pas !"
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

; Renvoie la valeur d'un élément du Tableau dans un Patch, le premier élément commence à 0.
Procedure.s GetSimplyJsonPatchArrayElement(SimplyJsonID.i, SimplyJsonPatch.s, NumeroElement.i, NumeroLigne.i = 0)
  
  ClearList(SimplyJsonLogMessages.s())
  
  If IsJSON(SimplyJsonID.i) 
    
    If CheckSimplyJsonPatch(SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AdresseMemoireValeurJson.i = FindSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      If AdresseMemoireValeurJson.i <> 0
        
        If JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Array
          
          If NumeroElement.i < 0
            
            AddElement(SimplyJsonLogMessages.s())
            SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - GetSimplyJsonPatchArrayElement: Echec - Impossible de récuperer l'élément n° " + Str(NumeroElement.i) + " du Tableau !, 'NumeroElement' doit être superieur à 0."
            
            ProcedureReturn ""
            
          ElseIf NumeroElement.i > JSONArraySize(AdresseMemoireValeurJson.i) - 1
            
            AddElement(SimplyJsonLogMessages.s())
            SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - GetSimplyJsonPatchArrayElement: Echec - Impossible de récuperer l'élément n° " + Str(NumeroElement.i) + " du Tableau !, 'NumeroElement' doit être superieur à 0 et plus petit ou égale au nombre d'élément dans le tableau !"
            
            ProcedureReturn ""
            
          EndIf
          
          AdresseMemoireValeurJson.i = GetJSONElement(AdresseMemoireValeurJson.i, NumeroElement.i)
          
          If AdresseMemoireValeurJson.i <> 0
            
            AddElement(SimplyJsonLogMessages.s())
            SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - GetSimplyJsonPatchArrayElement: Succès - l'élément n° " + Str(NumeroElement.i) + " du Tableau a bien été recuperer !"
            
            ProcedureReturn GetJSONString(AdresseMemoireValeurJson.i)
            
          Else
            
            AddElement(SimplyJsonLogMessages.s())
            SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - GetSimplyJsonPatchArrayElement: Echec - Impossible de récuperer l'élément n° " + Str(NumeroElement.i) + " du Tableau, erreur de mémoire, vérifiez le Numero de l'élément !"
            
            ProcedureReturn ""
            
          EndIf
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_String
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - GetSimplyJsonPatchArrayElement: Echec - Le Patch '" + SimplyJsonPatch.s + "' contient une valeur, pas un Tableau !"
          
          ProcedureReturn ""
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Null
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - GetSimplyJsonPatchArrayElement: Echec - Le Patch '" + SimplyJsonPatch.s + "' ne contient pas de valeur ni de Tableau (Null) !"
          
          ProcedureReturn ""
          
        Else
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - GetSimplyJsonPatchArrayElement: Echec - Le Patch '" + SimplyJsonPatch.s + "' ne contient pas de Tableau !"
          
          ProcedureReturn ""
          
        EndIf
        
      Else
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - GetSimplyJsonPatchArrayElement: Echec - le Patch '" + SimplyJsonPatch.s + "' n'existe pas !"
        
        ProcedureReturn ""
        
      EndIf
      
        DeleteElement(SimplyJsonLogMessages.s(), 1)
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + "GetSimplyJsonPatchArrayElement - : Echec - le Patch '" + SimplyJsonPatch.s + "' est invalide !"
        
        ProcedureReturn ""
      
    EndIf
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - GetSimplyJsonPatchArrayElement: Echec - Le Json '" + Str(SimplyJsonID.i) + "' n'existe pas !"
    
    ProcedureReturn ""
    
  EndIf
  
EndProcedure

; Renvoie le nombre d'éléments contenus dans un Tableau dans un Patch.
Procedure.i GetSimplyJsonPatchArraySize(SimplyJsonID.i, SimplyJsonPatch.s, NumeroLigne.i = 0)
  
  ClearList(SimplyJsonLogMessages.s())
  
  If IsJSON(SimplyJsonID.i) 
    
    If CheckSimplyJsonPatch(SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AdresseMemoireValeurJson.i = FindSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      If AdresseMemoireValeurJson.i <> 0
        
        If JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Array
          ProcedureReturn JSONArraySize(AdresseMemoireValeurJson.i)
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_String
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - GetSimplyJsonPatchArraySize: Echec - Le Patch '" + SimplyJsonPatch.s + "' contient une valeur, pas un Tableau !"
          
          ProcedureReturn 0
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Null
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - GetSimplyJsonPatchArraySize: Echec - Le Patch '" + SimplyJsonPatch.s + "' ne contient pas de valeur ni de Tableau (Null) !"
          
          ProcedureReturn 0
          
        Else
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - GetSimplyJsonPatchArraySize: Echec - Le Patch '" + SimplyJsonPatch.s + "' ne contient pas de Tableau !"
          
          ProcedureReturn 0
          
        EndIf
        
      Else
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - GetSimplyJsonPatchArraySize: Echec - le Patch '" + SimplyJsonPatch.s + "' n'existe pas !"
        
        ProcedureReturn 0
        
      EndIf
      
        DeleteElement(SimplyJsonLogMessages.s(), 1)
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + "GetSimplyJsonPatchArraySize - : Echec - le Patch '" + SimplyJsonPatch.s + "' est invalide !"
        
        ProcedureReturn 0
        
    EndIf
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - GetSimplyJsonPatchArraySize: Echec - Le Json '" + Str(SimplyJsonID.i) + "' n'existe pas !"
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

; Redimensionne un Tableau dans un Patch, la Taille minimum est de 0.
Procedure.b ResizeSimplyJsonPatchArray(SimplyJsonID.i, SimplyJsonPatch.s, Taille.i, NumeroLigne.i = 0)
  
  ClearList(SimplyJsonLogMessages.s())
  
  If IsJSON(SimplyJsonID.i) 
    
    If CheckSimplyJsonPatch(SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AdresseMemoireValeurJson.i = FindSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      If AdresseMemoireValeurJson.i <> 0
        
        If JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Array
          
          If Taille.i > 0
            
            ResizeJSONElements(AdresseMemoireValeurJson.i, Taille.i)
            
            AddElement(SimplyJsonLogMessages.s())
            SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ResizeSimplyJsonPatchArray: Succès - Le Tableau a été redimensionné !"
            
            ProcedureReturn 1
            
          Else
            
            AddElement(SimplyJsonLogMessages.s())
            SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ResizeSimplyJsonPatchArray: Echec - La 'Taille' doit être supérieure à 0 !"
            
            ProcedureReturn 0
            
          EndIf
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_String
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ResizeSimplyJsonPatchArray: Echec - Le Patch '" + SimplyJsonPatch.s + "' contient une valeur, pas un Tableau !"
          
          ProcedureReturn 0
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Null
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ResizeSimplyJsonPatchArray: Echec - Le Patch '" + SimplyJsonPatch.s + "' ne contient pas de valeur ni de Tableau (Null) !"
          
          ProcedureReturn 0
          
        EndIf
        
      Else
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + "ResizeSimplyJsonPatchArray - : Echec - le Patch '" + SimplyJsonPatch.s + "' n'existe pas !"
        
        ProcedureReturn 0
        
      EndIf
      
    Else
      
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AddElement(SimplyJsonLogMessages.s())
      SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + "ResizeSimplyJsonPatchArray - : Echec - le Patch '" + SimplyJsonPatch.s + "' est invalide !"
      
      ProcedureReturn 0
      
    EndIf
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ResizeSimplyJsonPatchArray: Echec - Le Json '" + Str(SimplyJsonID.i) + "' n'existe pas !"
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

; Insère un nouvel élément ainsi qu'une valeur dans un Tableau dans un Patch à l'emplacement désiré, le premier élément commence à 0.
Procedure.b InsertSimplyJsonPatchArrayElement(SimplyJsonID.i, SimplyJsonPatch.s, NumeroElement.i, Value.s, NumeroLigne.i = 0)
  
  ClearList(SimplyJsonLogMessages.s())
  
  If IsJSON(SimplyJsonID.i) 
    
    If CheckSimplyJsonPatch(SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AdresseMemoireValeurJson.i = FindSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      If AdresseMemoireValeurJson.i <> 0
        
        If JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Array
          
          If NumeroElement.i < 0
            
            AddElement(SimplyJsonLogMessages.s())
            SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchArrayElement: Echec - Impossible d'inserer l'élément n° " + Str(NumeroElement.i) + " au Tableau !, 'NumeroElement' doit être superieur à 0."
            
            ProcedureReturn 0
            
          ElseIf NumeroElement.i > JSONArraySize(AdresseMemoireValeurJson.i) - 1
            
            AddElement(SimplyJsonLogMessages.s())
            SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchArrayElement: Echec - Impossible d'inserer l'élément n° " + Str(NumeroElement.i) + " au Tableau !, 'NumeroElement' doit être superieur à 0 et plus petit ou égale au nombre d'élément dans le tableau !"
            
            ProcedureReturn 0
            
          EndIf
          
          NewList ListTemps.s()
          ClearList(ListTemps.s())
          
          For I = 0 To JSONArraySize(AdresseMemoireValeurJson.i) - 1
            
            If I = NumeroElement.i
              
              AddElement(ListTemps.s())
              ListTemps.s() = Value.s
              
            EndIf
            
            AddElement(ListTemps.s())
            
            If JSONType(GetJSONElement(AdresseMemoireValeurJson.i, I)) <> 0
              ListTemps.s() = GetJSONString(GetJSONElement(AdresseMemoireValeurJson.i, I))
              
            Else
              ListTemps.s() = "NULL"
              
            EndIf
            
          Next
          
          ClearJSONElements(AdresseMemoireValeurJson.i)
          
          ForEach ListTemps.s()
            
            Test.i = AddJSONElement(AdresseMemoireValeurJson.i)
            
            If Test.i <> 0
              
              If ListTemps.s() <> "NULL"
                SetJSONString(Test.i, ListTemps.s())
              Else
                SetJSONNull(Test.i)
              EndIf
              
            Else
              
              AddElement(SimplyJsonLogMessages.s())
              SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchArrayElement: Echec - Impossible de changé l'élément du Tableau, erreur de mémoire !"
              
              ProcedureReturn 0
              
            EndIf
            
          Next
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchArrayElement: Succès - L'élément '" + Value.s + "' a été ajouté au Tableau avec succès !"
          
          ProcedureReturn 1
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_String
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchArrayElement: Echec - Le Patch '" + SimplyJsonPatch.s + "' contient une valeur, pas un Tableau !"
          
          ProcedureReturn 0
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Null
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchArrayElement: Echec - Le Patch '" + SimplyJsonPatch.s + "' ne contient pas de valeur ni de Tableau (Null) !"
          
          ProcedureReturn 0
          
        Else
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchArrayElement: Echec - Le Patch '" + SimplyJsonPatch.s + "' ne contient pas de Tableau !"
          
          ProcedureReturn 0
          
        EndIf
        
      Else
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchArrayElement: Echec - le Patch '" + SimplyJsonPatch.s + "' n'existe pas !"
        
        ProcedureReturn 0
        
      EndIf
      
        DeleteElement(SimplyJsonLogMessages.s(), 1)
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + "InsertSimplyJsonPatchArrayElement - : Echec - le Patch '" + SimplyJsonPatch.s + "' est invalide !"
        
        ProcedureReturn 0
        
    EndIf
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchArrayElement: Echec - Le Json '" + Str(SimplyJsonID.i) + "' n'existe pas !"
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure
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: SimplyJson

Message par Shadow »

Partie 2:

Code : Tout sélectionner

; Supprime un élément ainsi que sa valeur dans un Tableau dans un Patch.
Procedure.b RemoveSimplyJsonPatchArrayElement(SimplyJsonID.i, SimplyJsonPatch.s, NumeroElement.i, NumeroLigne.i = 0)
  
  ClearList(SimplyJsonLogMessages.s())
  
  If IsJSON(SimplyJsonID.i) 
    
    If CheckSimplyJsonPatch(SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AdresseMemoireValeurJson.i = FindSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      If AdresseMemoireValeurJson.i <> 0
        
        If JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Array
          
          If JSONArraySize(AdresseMemoireValeurJson.i) - 1 > 0
            
            If NumeroElement.i => 0 And NumeroElement.i <= JSONArraySize(AdresseMemoireValeurJson.i) - 1
              
              AddElement(SimplyJsonLogMessages.s())
              SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - RemoveSimplyJsonPatchArrayElement: Succès  - L'élément n°" + Str(NumeroElement.i) + " du Tableau a été supprimé !"
              
              RemoveJSONElement(AdresseMemoireValeurJson.i, NumeroElement.i)
              
              ProcedureReturn 1
              
            Else
              
              AddElement(SimplyJsonLogMessages.s())
              SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - RemoveSimplyJsonPatchArrayElement: Echec  - L'élément n°" + Str(NumeroElement.i) + " du Tableau n'existe pas, index en dehor du Tableau !"
              
              ProcedureReturn 0
              
            EndIf
            
          Else
            
            AddElement(SimplyJsonLogMessages.s())
            SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - RemoveSimplyJsonPatchArrayElement: Echec  - Le Tableau ne contient aucun elements !"
            
            ProcedureReturn 0
            
          EndIf
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_String
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - RemoveSimplyJsonPatchArrayElement: Echec - Le Patch '" + SimplyJsonPatch.s + "' contient une valeur, pas un Tableau !"
          
          ProcedureReturn 0
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Null
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - RemoveSimplyJsonPatchArrayElement: Echec - Le Patch '" + SimplyJsonPatch.s + "' ne contient pas de valeur ni de Tableau (Null) !"
          
          ProcedureReturn 0
          
        Else
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - RemoveSimplyJsonPatchArrayElement: Echec - Le Patch '" + SimplyJsonPatch.s + "' ne contient pas de Tableau !"
          
          ProcedureReturn 0
          
        EndIf
        
      Else
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - RemoveSimplyJsonPatchArrayElement: Echec - le Patch '" + SimplyJsonPatch.s + "' n'existe pas !"
        
        ProcedureReturn 0
        
      EndIf
      
    Else
      
        DeleteElement(SimplyJsonLogMessages.s(), 1)
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + "RemoveSimplyJsonPatchArrayElement - : Echec - le Patch '" + SimplyJsonPatch.s + "' est invalide !"
        
        ProcedureReturn 0
        
    EndIf
      
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - RemoveSimplyJsonPatchArrayElement: Echec - Le Json '" + Str(SimplyJsonID.i) + "' n'existe pas !"
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

; Supprime tous les éléments ainsi que leur valeur dans un Tableau dans un Patch.
Procedure.b ClearSimplyJsonPatchArray(SimplyJsonID.i, SimplyJsonPatch.s, NumeroLigne.i = 0)
  
  ClearList(SimplyJsonLogMessages.s())
  
  If IsJSON(SimplyJsonID.i) 
    
    If CheckSimplyJsonPatch(SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AdresseMemoireValeurJson.i = FindSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      If AdresseMemoireValeurJson.i <> 0
        
        If JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Array
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ClearSimplyJsonPatchArray: Succès - Tous les elements du Tableau ont été supprimés !"
          
          ClearJSONElements(AdresseMemoireValeurJson.i)
          
          ProcedureReturn 1
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_String
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ClearSimplyJsonPatchArray: Echec - Le Patch '" + SimplyJsonPatch.s + "' contient une valeur, pas un Tableau !"
          
          ProcedureReturn 0
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Null
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ClearSimplyJsonPatchArray: Echec - Le Patch '" + SimplyJsonPatch.s + "' ne contient pas de valeur ni de Tableau (Null) !"
          
          ProcedureReturn 0
          
        EndIf
        
      Else
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ClearSimplyJsonPatchArray: Echec - le Patch '" + SimplyJsonPatch.s + "' n'existe pas !"
        
        ProcedureReturn 0
        
      EndIf
      
    Else
      
        DeleteElement(SimplyJsonLogMessages.s(), 1)
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + "ClearSimplyJsonPatchArray - : Echec - le Patch '" + SimplyJsonPatch.s + "' est invalide !"
        
        ProcedureReturn 0
        
    EndIf
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ClearSimplyJsonPatchArray: Echec - Le Json '" + Str(SimplyJsonID.i) + "' n'existe pas !"
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

; Supprime un Tableau dans un Patch, Le Tableau doit être vidé avant, effacez-le avec la commande 'ClearSimplyJsonPatchArray()'.
Procedure.b RemoveSimplyJsonPatchArray(SimplyJsonID.i, SimplyJsonPatch.s, NumeroLigne.i = 0)
  
  ClearList(SimplyJsonLogMessages.s())
  
  If IsJSON(SimplyJsonID.i) 
    
    If CheckSimplyJsonPatch(SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AdresseMemoireValeurJson.i = FindSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      If AdresseMemoireValeurJson.i <> 0
        
        If JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Array
          
          If JSONArraySize(AdresseMemoireValeurJson.i) - 1 > 0
            
            AddElement(SimplyJsonLogMessages.s())
            SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - RemoveSimplyJsonPatchArray: Echec - Veuillez effacer le Tableau avant de le supprimer avec la commande ClearSimplyJsonPatchArray !"
            
            ClearJSONElements(AdresseMemoireValeurJson.i)
            
            ProcedureReturn 0
            
          EndIf
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - RemoveSimplyJsonPatchArray: Succès - Le Tableau a été supprimé !"
          
          SetJSONNull(AdresseMemoireValeurJson.i)
          
          ProcedureReturn 1
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_String
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - RemoveSimplyJsonPatchArray: Echec - Le Patch '" + SimplyJsonPatch.s + "' contient une valeur, pas un Tableau !"
          
          ProcedureReturn 0
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Null
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - RemoveSimplyJsonPatchArray: Echec - Le Patch '" + SimplyJsonPatch.s + "' ne contient pas de valeur ni de Tableau (Null) !"
          
          ProcedureReturn 0
          
        EndIf
        
      Else
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + "RemoveSimplyJsonPatchArray - : Echec - le Patch '" + SimplyJsonPatch.s + "' n'existe pas !"
        
        ProcedureReturn 0
        
      EndIf
      
    Else
      
        DeleteElement(SimplyJsonLogMessages.s(), 1)
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + "RemoveSimplyJsonPatchArray - : Echec - le Patch '" + SimplyJsonPatch.s + "' est invalide !"
        
        ProcedureReturn 0
        
    EndIf
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - RemoveSimplyJsonPatchArray: Echec - Le Json '" + Str(SimplyJsonID.i) + "' n'existe pas !"
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

; Insère un Tableau composer d'une dimension dans un Patch.
Procedure.b InsertSimplyJsonPatchUniArray(SimplyJsonID.i, SimplyJsonPatch.s, Array Tableau.s(1), NumeroLigne.i = 0)
  
  ClearList(SimplyJsonLogMessages.s())
  
  If IsJSON(SimplyJsonID.i) 
    
    If CheckSimplyJsonPatch(SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AdresseMemoireValeurJson.i = FindSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      If AdresseMemoireValeurJson.i <> 0
        
        If JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Array
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchUniArray: Echec  - L'insertion du Tableau à échoué, ce Patch contient déjà un Tableau !"
          
          ProcedureReturn 0
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_String And GetJSONString(AdresseMemoireValeurJson.i) > ""
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchUniArray: Echec - Le Patch '" + SimplyJsonPatch.s + "' contient une valeur, mettez la valeur à " + Chr(34) + Chr(34) + " avant d'y mettre un Tableau !"
          
          ProcedureReturn 0
          
        EndIf
        
        AdresseMemoireValeurJson.i = InsertJSONArray(AdresseMemoireValeurJson.i, Tableau.s())
        
        If AdresseMemoireValeurJson.i <> 0
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchUniArray: Succès  - Le Tableau à été inserer dans le Patch avec succès !"
          
          ProcedureReturn 1
          
        Else
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchUniArray: Echec  - L'insertion du Tableau à échoué, erreur de mémoire !"
          
          ProcedureReturn 0
          
        EndIf
        
      Else
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchUniArray: Echec - le Patch '" + SimplyJsonPatch.s + "' n'existe pas !"
        
        ProcedureReturn 0
        
      EndIf
      
        DeleteElement(SimplyJsonLogMessages.s(), 1)
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + "InsertSimplyJsonPatchUniArray - : Echec - le Patch '" + SimplyJsonPatch.s + "' est invalide !"
        
        ProcedureReturn 0
      
    EndIf
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchUniArray: Echec - Le Json '" + Str(SimplyJsonID.i) + "' n'existe pas !"
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure 

; Insère un Tableau composé de deux dimension dans un Patch.
Procedure.b InsertSimplyJsonPatchMultiArray(SimplyJsonID.i, SimplyJsonPatch.s, Array Tableau.s(2), NumeroLigne.i = 0)
  
  ClearList(SimplyJsonLogMessages.s())
  
  If IsJSON(SimplyJsonID.i) 
    
    If CheckSimplyJsonPatch(SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AdresseMemoireValeurJson.i = FindSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      If AdresseMemoireValeurJson.i <> 0
        
        If JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Array
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchMultiArray: Echec  - L'insertion du Tableau à échoué, ce Patch contient déjà un Tableau !"
          
          ProcedureReturn 0
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_String And GetJSONString(AdresseMemoireValeurJson.i) > ""
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchMultiArray: Echec - Le Patch '" + SimplyJsonPatch.s + "' contient une valeur, mettez la valeur à " + Chr(34) + Chr(34) + " avant d'y mettre un Tableau !"
          
          ProcedureReturn 0
          
        EndIf
        
        AdresseMemoireValeurJson.i = InsertJSONArray(AdresseMemoireValeurJson.i, Tableau.s())
        
        If AdresseMemoireValeurJson.i <> 0
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchMultiArray: Succès  - Le Tableau à été inserer dans le Patch avec succès !"
          
          ProcedureReturn 1
          
        Else
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchMultiArray: Echec  - L'insertion du Tableau à échoué, erreur de mémoire !"
          
          ProcedureReturn 0
          
        EndIf
        
      Else
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchMultiArray: Echec - le Patch '" + SimplyJsonPatch.s + "' n'existe pas !"
        
        ProcedureReturn 0
        
      EndIf
      
        DeleteElement(SimplyJsonLogMessages.s(), 1)
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + "InsertSimplyJsonPatchMultiArray - : Echec - le Patch '" + SimplyJsonPatch.s + "' est invalide !"
        
        ProcedureReturn 0
      
    EndIf
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchMultiArray: Echec - Le Json '" + Str(SimplyJsonID.i) + "' n'existe pas !"
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure 

; Insère un Tableau composer de 3 dimension dans un Patch.
Procedure.b InsertSimplyJsonPatchTriArray(SimplyJsonID.i, SimplyJsonPatch.s, Array Tableau.s(3), NumeroLigne.i = 0)
  
  ClearList(SimplyJsonLogMessages.s())
  
  If IsJSON(SimplyJsonID.i) 
    
    If CheckSimplyJsonPatch(SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AdresseMemoireValeurJson.i = FindSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      If AdresseMemoireValeurJson.i <> 0
        
        If JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Array
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchTriArray: Echec  - L'insertion du Tableau à échoué, ce Patch contient déjà un Tableau !"
          
          ProcedureReturn 0
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_String And GetJSONString(AdresseMemoireValeurJson.i) > ""
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchTriArray: Echec - Le Patch '" + SimplyJsonPatch.s + "' contient une valeur, mettez la valeur à " + Chr(34) + Chr(34) + " avant d'y mettre un Tableau !"
          
          ProcedureReturn 0
          
        EndIf
        
        AdresseMemoireValeurJson.i = InsertJSONArray(AdresseMemoireValeurJson.i, Tableau.s())
        
        If AdresseMemoireValeurJson.i <> 0
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchTriArray: Succès  - Le Tableau à été inserer dans le Patch avec succès !"
          
          ProcedureReturn 1
          
        Else
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchTriArray: Echec  - L'insertion du Tableau à échoué, erreur de mémoire !"
          
          ProcedureReturn 0
          
        EndIf
        
      Else
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchTriArray: Echec - le Patch '" + SimplyJsonPatch.s + "' n'existe pas !"
        
        ProcedureReturn 0
        
      EndIf
      
        DeleteElement(SimplyJsonLogMessages.s(), 1)
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + "InsertSimplyJsonPatchTriArray - : Echec - le Patch '" + SimplyJsonPatch.s + "' est invalide !"
        
        ProcedureReturn 0
      
    EndIf
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchTriArray: Echec - Le Json '" + Str(SimplyJsonID.i) + "' n'existe pas !"
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure 

; Insère une Liste dans un Patch.
Procedure.b InsertSimplyJsonPatchList(SimplyJsonID.i, SimplyJsonPatch.s, List Liste.s(), NumeroLigne.i = 0)
  
  ClearList(SimplyJsonLogMessages.s())
  
  If IsJSON(SimplyJsonID.i) 
    
    If CheckSimplyJsonPatch(SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AdresseMemoireValeurJson.i = FindSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      If AdresseMemoireValeurJson.i <> 0
        
        If JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Array
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchList: Echec  - L'insertion de la Liste à échoué, ce Patch contient déjà un Tableau !"
          
          ProcedureReturn 0
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_String And GetJSONString(AdresseMemoireValeurJson.i) > ""
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchList: Echec - Le Patch '" + SimplyJsonPatch.s + "' contient une valeur, mettez la valeur à " + Chr(34) + Chr(34) + " avant d'y mettre un Tableau !"
          
          ProcedureReturn 0
          
        EndIf
        
        AdresseMemoireValeurJson.i = InsertJSONList(AdresseMemoireValeurJson.i, Liste.s())
        
        If AdresseMemoireValeurJson.i <> 0
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchList: Succès  - La Liste à été inserer dans le Patch avec succès !"
          
          ProcedureReturn 1
          
        Else
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchList: Echec  - L'insertion de la Liste à échoué, erreur de mémoire !"
          
          ProcedureReturn 0
          
        EndIf
        
      Else
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchList: Echec - le Patch '" + SimplyJsonPatch.s + "' n'existe pas !"
        
        ProcedureReturn 0
        
      EndIf
      
        DeleteElement(SimplyJsonLogMessages.s(), 1)
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + "InsertSimplyJsonPatchList - : Echec - le Patch '" + SimplyJsonPatch.s + "' est invalide !"
        
        ProcedureReturn 0
      
    EndIf
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchList: Echec - Le Json '" + Str(SimplyJsonID.i) + "' n'existe pas !"
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure 

; Insère une Map dans un Patch.
Procedure.b InsertSimplyJsonPatchMap(SimplyJsonID.i, SimplyJsonPatch.s, Map Map.s(), NumeroLigne.i = 0)
  
  ClearList(SimplyJsonLogMessages.s())
  
  If IsJSON(SimplyJsonID.i) 
    
    If CheckSimplyJsonPatch(SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AdresseMemoireValeurJson.i = FindSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      If AdresseMemoireValeurJson.i <> 0
        
        If JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Array
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchMap: Echec  - L'insertion de la Map à échoué, ce Patch contient déjà un Tableau !"
          
          ProcedureReturn 0
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_String And GetJSONString(AdresseMemoireValeurJson.i) > ""
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchMap: Echec - Le Patch '" + SimplyJsonPatch.s + "' contient une valeur, mettez la valeur à " + Chr(34) + Chr(34) + " avant d'y mettre un Tableau !"
          
          ProcedureReturn 0
          
        EndIf
        
        AdresseMemoireValeurJson.i = InsertJSONMap(AdresseMemoireValeurJson.i, Map.s())
        
        If AdresseMemoireValeurJson.i <> 0
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchMap: Succès  - La Map à été inserer dans le Patch avec succès !"
          
          ProcedureReturn 1
          
        Else
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchMap: Echec  - L'insertion de la Map à échoué, erreur de mémoire !"
          
          ProcedureReturn 0
          
        EndIf
        
      Else
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchMap: Echec - le Patch '" + SimplyJsonPatch.s + "' n'existe pas !"
        
        ProcedureReturn 0
        
      EndIf
      
        DeleteElement(SimplyJsonLogMessages.s(), 1)
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + "InsertSimplyJsonPatchMap - : Echec - le Patch '" + SimplyJsonPatch.s + "' est invalide !"
        
        ProcedureReturn 0
      
    EndIf
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - InsertSimplyJsonPatchMap: Echec - Le Json '" + Str(SimplyJsonID.i) + "' n'existe pas !"
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure 

; Extrait un Tableau composer d'une dimension dans un Patch.
Procedure.b ExtractSimplyJsonPatchUniArray(SimplyJsonID.i, SimplyJsonPatch.s, Array Tableau.s(1), NumeroLigne.i = 0)
  
  ClearList(SimplyJsonLogMessages.s())
  
  If IsJSON(SimplyJsonID.i) 
    
    If CheckSimplyJsonPatch(SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AdresseMemoireValeurJson.i = FindSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      If AdresseMemoireValeurJson.i <> 0
        
        If JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Array
          
          ExtractJSONArray(AdresseMemoireValeurJson.i, Tableau.s())
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ExtractSimplyJsonPatchUniArray: Succès  - Le Tableau à été Extrait du Patch avec succès !"
          
          ProcedureReturn 1
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_String And GetJSONString(AdresseMemoireValeurJson.i) > ""
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ExtractSimplyJsonPatchUniArray: Echec - Le Patch '" + SimplyJsonPatch.s + "' contient une valeur, pas un Tableau !"
          
          ProcedureReturn 0
          
        EndIf
        
      Else
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ExtractSimplyJsonPatchUniArray: Echec - le Patch '" + SimplyJsonPatch.s + "' n'existe pas !"
        
        ProcedureReturn 0
        
      EndIf
      
        DeleteElement(SimplyJsonLogMessages.s(), 1)
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + "ExtractSimplyJsonPatchUniArray - : Echec - le Patch '" + SimplyJsonPatch.s + "' est invalide !"
        
        ProcedureReturn 0
      
    EndIf
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ExtractSimplyJsonPatchUniArray: Echec - Le Json '" + Str(SimplyJsonID.i) + "' n'existe pas !"
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure 

; Extrait un Tableau composer de deux dimension dans un Patch.
Procedure.b ExtractSimplyJsonPatchMultiArray(SimplyJsonID.i, SimplyJsonPatch.s, Array Tableau.s(2), NumeroLigne.i = 0)
  
  ClearList(SimplyJsonLogMessages.s())
  
  If IsJSON(SimplyJsonID.i) 
    
    If CheckSimplyJsonPatch(SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AdresseMemoireValeurJson.i = FindSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      If AdresseMemoireValeurJson.i <> 0
        
        If JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Array
          
          ExtractJSONArray(AdresseMemoireValeurJson.i, Tableau.s())
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ExtractSimplyJsonPatchMultiArray: Succès  - Le Tableau à été Extrait du Patch avec succès !"
          
          ProcedureReturn 1
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_String And GetJSONString(AdresseMemoireValeurJson.i) > ""
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ExtractSimplyJsonPatchMultiArray: Echec - Le Patch '" + SimplyJsonPatch.s + "' contient une valeur, pas un Tableau !"
          
          ProcedureReturn 0
          
        EndIf
        
      Else
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ExtractSimplyJsonPatchMultiArray: Echec - le Patch '" + SimplyJsonPatch.s + "' n'existe pas !"
        
        ProcedureReturn 0
        
      EndIf
      
        DeleteElement(SimplyJsonLogMessages.s(), 1)
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + "ExtractSimplyJsonPatchMultiArray - : Echec - le Patch '" + SimplyJsonPatch.s + "' est invalide !"
        
        ProcedureReturn 0
      
    EndIf
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ExtractSimplyJsonPatchMultiArray: Echec - Le Json '" + Str(SimplyJsonID.i) + "' n'existe pas !"
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure 

; Extrait un Tableau composer de trois dimension dans un Patch.
Procedure.b ExtractSimplyJsonPatchTriArray(SimplyJsonID.i, SimplyJsonPatch.s, Array Tableau.s(3), NumeroLigne.i = 0)
  
  ClearList(SimplyJsonLogMessages.s())
  
  If IsJSON(SimplyJsonID.i) 
    
    If CheckSimplyJsonPatch(SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AdresseMemoireValeurJson.i = FindSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      If AdresseMemoireValeurJson.i <> 0
        
        If JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Array
          
          ExtractJSONArray(AdresseMemoireValeurJson.i, Tableau.s())
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ExtractSimplyJsonPatchTriArray: Succès  - Le Tableau à été Extrait du Patch avec succès !"
          
          ProcedureReturn 1
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_String And GetJSONString(AdresseMemoireValeurJson.i) > ""
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ExtractSimplyJsonPatchTriArray: Echec - Le Patch '" + SimplyJsonPatch.s + "' contient une valeur, pas un Tableau !"
          
          ProcedureReturn 0
          
        EndIf
        
      Else
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ExtractSimplyJsonPatchTriArray: Echec - le Patch '" + SimplyJsonPatch.s + "' n'existe pas !"
        
        ProcedureReturn 0
        
      EndIf
      
        DeleteElement(SimplyJsonLogMessages.s(), 1)
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + "ExtractSimplyJsonPatchTriArray - : Echec - le Patch '" + SimplyJsonPatch.s + "' est invalide !"
        
        ProcedureReturn 0
      
    EndIf
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ExtractSimplyJsonPatchTriArray: Echec - Le Json '" + Str(SimplyJsonID.i) + "' n'existe pas !"
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure 

; Extrait une Liste dans un Patch.
Procedure.b ExtractSimplyJsonPatchList(SimplyJsonID.i, SimplyJsonPatch.s, List Liste.s(), NumeroLigne.i = 0)
  
  ClearList(SimplyJsonLogMessages.s())
  
  If IsJSON(SimplyJsonID.i) 
    
    If CheckSimplyJsonPatch(SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AdresseMemoireValeurJson.i = FindSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      If AdresseMemoireValeurJson.i <> 0
        
        If JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Array
          
          ExtractJSONList(AdresseMemoireValeurJson.i, Liste.s())
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ExtractSimplyJsonPatchList: Succès  - Le Tableau à été Extrait du Patch et mis dans une Liste avec succès !"
          
          ProcedureReturn 1
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_String And GetJSONString(AdresseMemoireValeurJson.i) > ""
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ExtractSimplyJsonPatchList: Echec - Le Patch '" + SimplyJsonPatch.s + "' contient une valeur, pas une Liste ni un Tableau !"
          
          ProcedureReturn 0
          
        EndIf
        
      Else
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ExtractSimplyJsonPatchList: Echec - le Patch '" + SimplyJsonPatch.s + "' n'existe pas !"
        
        ProcedureReturn 0
        
      EndIf
      
        DeleteElement(SimplyJsonLogMessages.s(), 1)
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + "ExtractSimplyJsonPatchList - : Echec - le Patch '" + SimplyJsonPatch.s + "' est invalide !"
        
        ProcedureReturn 0
      
    EndIf
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ExtractSimplyJsonPatchList: Echec - Le Json '" + Str(SimplyJsonID.i) + "' n'existe pas !"
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure 

; Extrait une Map dans un Patch.
Procedure.b ExtractSimplyJsonPatchMap(SimplyJsonID.i, SimplyJsonPatch.s, Map Map.s(), NumeroLigne.i = 0)
  
  ClearList(SimplyJsonLogMessages.s())
  
  If IsJSON(SimplyJsonID.i) 
    
    If CheckSimplyJsonPatch(SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AdresseMemoireValeurJson.i = FindSimplyJsonPatch(SimplyJsonID.i, SimplyJsonPatch.s)
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      If AdresseMemoireValeurJson.i <> 0
        
        If JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_Array
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ExtractSimplyJsonPatchMap: Echec - L'extraction de la Map à échoué, ce Patch '" + SimplyJsonPatch.s + "' contient un Tableau, pas une Map !"
          
          ProcedureReturn 0
          
        ElseIf JSONType(AdresseMemoireValeurJson.i) = #PB_JSON_String And GetJSONString(AdresseMemoireValeurJson.i) > ""
          
          AddElement(SimplyJsonLogMessages.s())
          SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ExtractSimplyJsonPatchMap: Echec - L'extraction de la Map à échoué, ce Patch '" + SimplyJsonPatch.s + "' contient une Valeur, pas une Map !"
          
          ProcedureReturn 0
          
        EndIf
        
        ExtractJSONMap(AdresseMemoireValeurJson.i, Map.s())
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ExtractSimplyJsonPatchMap: Succès  - La Map à été extrait du Patch avec succès !"
        
        ProcedureReturn 1
        
      Else
        
        AddElement(SimplyJsonLogMessages.s())
        SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ExtractSimplyJsonPatchMap: Echec - le Patch '" + SimplyJsonPatch.s + "' n'existe pas !"
        
        ProcedureReturn 0
        
      EndIf
      
      DeleteElement(SimplyJsonLogMessages.s(), 1)
      
      AddElement(SimplyJsonLogMessages.s())
      SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + "ExtractSimplyJsonPatchMap - : Echec - le Patch '" + SimplyJsonPatch.s + "' est invalide !"
      
        ProcedureReturn 0
      
    EndIf
    
  Else
    
    AddElement(SimplyJsonLogMessages.s())
    SimplyJsonLogMessages.s() = Str(NumeroLigne.i) + " - ExtractSimplyJsonPatchMap: 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\Aurelie", #PB_Compiler_Line)
    DebugSimplyJsonMessages()
  EndIf
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Famille\Membres\Parent\Thomas", #PB_Compiler_Line)
    DebugSimplyJsonMessages()
  EndIf
  
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Famille\Membres\Parent\Enfants\Lucka", #PB_Compiler_Line)
    DebugSimplyJsonMessages()
  EndIf
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Famille\Membres\Parent\Enfants\Calypso", #PB_Compiler_Line)
    DebugSimplyJsonMessages()
  EndIf
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Famille\Membres\Parent\Enfants\Lucile", #PB_Compiler_Line)
    DebugSimplyJsonMessages()
  EndIf
  
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Famille\Membres\Animaux\Chien", #PB_Compiler_Line)
    DebugSimplyJsonMessages()
  EndIf
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Famille\Membres\Animaux\Chat", #PB_Compiler_Line)
    DebugSimplyJsonMessages()
  EndIf
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Famille\Membres\Animaux\Poisson", #PB_Compiler_Line)
    DebugSimplyJsonMessages()
  EndIf
  
  
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Famille\Membres\Parent\Thomas\Age", #PB_Compiler_Line)
    DebugSimplyJsonMessages()
  EndIf
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Famille\Membres\Parent\Thomas\Taille", #PB_Compiler_Line)
    DebugSimplyJsonMessages()
  EndIf
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Famille\Membres\Parent\Thomas\Poids", #PB_Compiler_Line)
    DebugSimplyJsonMessages()
  EndIf
  
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Famille\Membres\Parent\Aurelie\Age", #PB_Compiler_Line)
    DebugSimplyJsonMessages()
  EndIf
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Famille\Membres\Parent\Aurelie\Taille", #PB_Compiler_Line)
    DebugSimplyJsonMessages()
  EndIf
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Famille\Membres\Parent\Aurelie\Poids", #PB_Compiler_Line)
    DebugSimplyJsonMessages()
  EndIf
  
  
  If Not SetSimplyJsonPatchValue(SimplyJsonID.i, "Famille\Membres\Parent\Aurelie\Age", "24", #PB_Compiler_Line)
    DebugSimplyJsonMessages()
  EndIf
  
  If Not SetSimplyJsonPatchValue(SimplyJsonID.i, "Famille\Membres\Parent\Aurelie\Taille", "165", #PB_Compiler_Line)
    DebugSimplyJsonMessages()
  EndIf
  
  If Not SetSimplyJsonPatchValue(SimplyJsonID.i, "Famille\Membres\Parent\Aurelie\Poids", "65", #PB_Compiler_Line)
    DebugSimplyJsonMessages()
  EndIf
  
  
  If Not SetSimplyJsonPatchValue(SimplyJsonID.i, "Famille\Membres\Parent\Thomas\Age", "26", #PB_Compiler_Line)
    DebugSimplyJsonMessages()
  EndIf
  
  If Not SetSimplyJsonPatchValue(SimplyJsonID.i, "Famille\Membres\Parent\Thomas\Taille", "171", #PB_Compiler_Line)
    DebugSimplyJsonMessages()
  EndIf
  
  If Not SetSimplyJsonPatchValue(SimplyJsonID.i, "Famille\Membres\Parent\Thomas\Poids", "75", #PB_Compiler_Line)
    DebugSimplyJsonMessages()
  EndIf
  
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Famille\Maison", #PB_Compiler_Line)
    DebugSimplyJsonMessages()
  EndIf
  
  If Not CreateSimplyJsonPatch(SimplyJsonID.i, "Famille\Voiture", #PB_Compiler_Line)
    DebugSimplyJsonMessages()
  EndIf
  
  
  If Not SaveJSON(SimplyJsonID.i, "Exemple SimplyJson.Json", #PB_JSON_PrettyPrint)
    Debug "Impossible de sauvegarder le Json !"
  EndIf
  
  If Not ClearSimplyJson(SimplyJsonID.i)
    DebugSimplyJsonMessages()
  EndIf

  If Not LoadJSON(SimplyJsonID.i, "Exemple SimplyJson.Json")
    Debug "Impossible de sauvegarder le Json !"
  EndIf
  
  Debug "-------------------------------------------------------------------------"
  Debug ComposeJSON(SimplyJsonID.i, #PB_JSON_PrettyPrint)
  Debug "-------------------------------------------------------------------------"
  
Else
  DebugSimplyJsonMessages()
  
  EndIf
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
Naheulf
Messages : 193
Inscription : dim. 10/mars/2013 22:22
Localisation : France

Re: SimplyJson

Message par Naheulf »

Heureusement que je n'ai pas découvert le JSON avec ton code sinon j'aurais abandonné...
Avatar de l’utilisateur
Ar-S
Messages : 9546
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: SimplyJson

Message par Ar-S »

Simply Json et tu postes +2400 lignes de codes.. :roll:
C'est sur que je ne vais même pas tester..
Merci pour ton initiative mais sincèrement je ne pense pas que tu sois assez calé ou simplement pas assez pédagogue pour faire un tuto concis et compréhensible.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: SimplyJson

Message par Shadow »

Ar-S a écrit :Simply Json et tu postes +2400 lignes de codes.. :roll:
C'est sur que je ne vais même pas tester..
Merci pour ton initiative mais sincèrement je ne pense pas que tu sois assez calé ou simplement pas assez pédagogue pour faire un tuto concis et compréhensible.
C'est pas un tuto là hein, et j'ai jamais dis que j'était parfais, je partage mes codes, mes idées, mes découvertes, tu crois que l'informatique à été aussi performant d'un coup toi ?
Nous devons apprendre, et c'est se que je fais, oui le code est long c'est vraie, trop pour moi aussi mais parce que ya pleins de fonctions aussi !
Je suis sur une nouvelle version, dans le but d'amélioré tous ça !
Les critiques ça va 2 minutes les gars là, au lieux de me cloué sur un poteau, examiner le code et dite moi se qui ne va pas, se qui est bien etc...
Vos critique à deux balles sont énervantes, ya rien de constructif là dedans !!!
mais sincèrement je ne pense pas que tu sois assez calé ou simplement pas assez pédagogue pour faire un tuto concis et compréhensible.
C'EST PAS UN TUTO !!!

Et je suis largement capable de faire tuto concis et compréhensible, t'as qua regarder dans le tuto de Falsam j'ai mis des chose.
Quand c'est pas bien là ça crache sévère mais quand c'est bien ya personne là hein !
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
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: SimplyJson

Message par kernadec »

bjr à tous
@Ombré
ça me rappelle quand j'écrivais dans les années 80 des moulinettes pour convertir des plans au formats DXF
vers d'autres format de fichier dgn de Microstation et d' autres logiciels de dessins annexes :mrgreen:
Puisque que tu semble aimer les moulinettes
comme celle que tu as faite pour construire des interfaces avec visualStudio et les porter vers PB.
alors j'ai peut etre une idée pour ton abnégation à la moulinette :wink:

B4A d' android est devenu gratuit, j'ai regarder les commandes pour quelqu'un comme toi
il y a là, la possibilité de faire un convertisseur de code pour dégrossir le transfert ça pourrait être un truc sympa...
ya du boulot :wink: mais comme le nombre de ligne te fais pas peur :mrgreen:

Cordialement

https://www.b4x.com/android/documentation.html
Avatar de l’utilisateur
Ar-S
Messages : 9546
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: SimplyJson

Message par Ar-S »

Heu.. désolé Shadow mais ta 1ere phrase est :
Voici un petit programme pour faire du Json facilement.
Ensuite tu vois où une critique, je te dis d'abord merci mais que ton code est bien trop long et sûrement tout sauf "facile".
Vos critique à deux balles sont énervantes, ya rien de constructif là dedans !!!
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: SimplyJson

Message par Shadow »

kernadec > ???
J'ai pas androïde !
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
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: SimplyJson

Message par kernadec »

pas grave il y a des émulateurs gratuit Android
et puis un mobile Andoid de base sont a 100 balles
alors quand tu vois les Xiaomi c est ouf celui là à 200€ xiaomi redmi note 8
cordialement
https://www.01net.com/telecharger/windo ... 31887.html
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: SimplyJson

Message par Shadow »

Il à l'air sympa se Basic, mais concrètement tu peux faire quoi avec ?
Edit, bon je sais pas comment ça marche votre machin là j'ai essayé mais j'y arrive pas.
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: SimplyJson

Message par SPH »

-------------------------------------------------------------------------
{
"Famille": {
"Voiture": null,
"Maison" : null,
"Membres": {
"Parent" : {
"Aurelie": {
"Taille": "165",
"Poids" : "65",
"Age" : "24"
},
"Enfants": {
"Calypso": null,
"Lucile" : null,
"Lucka" : null
},
"Thomas" : {
"Taille": "171",
"Poids" : "75",
"Age" : "26"
}
},
"Animaux": {
"Poisson": null,
"Chien" : null,
"Chat" : null
}
}
}
}
-------------------------------------------------------------------------
Ce code ne m'a pas plus renseigné que la notice.
Je prefere faire ma popotte avec d'autres instructions de PB...

!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
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: SimplyJson

Message par Shadow »

Je redis une fois encore, ceci n'est PAS UN TUTO !
Plus court et optimisé mais avec un minimum de code:

Code : Tout sélectionner

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

; Liste pour les messages de debogage.
Global NewList SJsonLogMessages.s()

; Pour se souvenir de l'option 'Case' lors de la création du Json.
Global SJsonCase.b

; Contient la valeur du dernier Patch quand la commande GetSJsonPatchString() est appelé.
Global SJsonPatchString.s

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

; Ajouter des messages dans la liste de debogage.
Procedure DebugSJsonAddMessages(Message.s)
  
  AddElement(SJsonLogMessages.s())
  SJsonLogMessages.s() = Message.s
  
EndProcedure

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

; Vérifier que le Patch existe dans le Json.
Procedure.i FindSJsonPatch(SJsonID.i, SJsonPatch.s, NumeroLigne.i = 0)
  
  ClearList(SJsonLogMessages.s())
  
  If IsJSON(SJsonID.i) 
    
    If CheckSJsonPatch(SJsonPatch.s)
      DeleteElement(SJsonLogMessages.s(), 1)
      
      AdresseMemoireValeurJson.i = JSONValue(SJsonID.i)
      
      If AdresseMemoireValeurJson.i <> 0
        
        NombreSlash.i = CountString(SJsonPatch.s, "\")
        
        If NombreSlash.i = 0
          
          MembreName.s = StringField(SJsonPatch.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
              DebugSJsonAddMessages("Ligne: " + Str(NumeroLigne.i) + " - FindSJsonPatch: Echec  - Le Membre '" + MembreName.s + "' est introuvable dans le Json !")
              ProcedureReturn 0
              
            EndIf
            
            DebugSJsonAddMessages("Ligne: " + Str(NumeroLigne.i) + " - FindSJsonPatch: Succès - Le Membre '" + SJsonPatch.s + "' existe bien dans le Json !")
            ProcedureReturn AdresseMemoireValeurJson.i
            
          Else
            DebugSJsonAddMessages("Ligne: " + Str(NumeroLigne.i) + " - FindSJsonPatch: Echec  - Le Json '" + Str(SJsonID.i) + "' n'a 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(SJsonPatch.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
                DebugSJsonAddMessages("Ligne: " + Str(NumeroLigne.i) + " - FindSJsonPatch: Echec  - Le Membre '" + MembreName.s + "' est introuvable dans le Json !")
                ProcedureReturn 0
                
              EndIf
              
            Next
            
            DebugSJsonAddMessages("Ligne: " + Str(NumeroLigne.i) + " - FindSJsonPatch: Succès - Le Patch '" + SJsonPatch.s + "' existe bien dans le Json !")
            ProcedureReturn AdresseMemoireValeurJson
            
          Else
            DebugSJsonAddMessages("Ligne: " + Str(NumeroLigne.i) + " - FindSJsonPatch: Echec  - Le Json '" + Str(SJsonID.i) + "' n'a pas de Membre !")
            ProcedureReturn 0
            
          EndIf
          
        EndIf
        
      Else
        DebugSJsonAddMessages("Ligne: " + Str(NumeroLigne.i) + " - FindSJsonPatch: Echec  - Le Json '" + Str(SJsonID.i) + "' n'est pas initialisé !")
        ProcedureReturn 0
        
      EndIf
      
    Else
      DeleteElement(SJsonLogMessages.s(), 1)
      DebugSJsonAddMessages("Ligne: " + Str(NumeroLigne.i) + " - FindSJsonPatch: Echec  - La recherche du Patch du Json '" + Str(SJsonID.i) + "' a échoué, Patch invalide !")
      ProcedureReturn 0
      
    EndIf
    
  Else
    DebugSJsonAddMessages("Ligne: " + Str(NumeroLigne.i) + " - FindSJsonPatch: Echec  - Le Json '" + Str(SJsonID.i) + "' n'existe pas !")
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

;{ Système:
; Système - Procédure de vérification du Patch.
Procedure.b IsCheckSJsonPatch(SJsonID.i, SJsonPatch.s, NomProcedure.s, NumeroLigne.i)
  
  If CheckSJsonPatch(SJsonPatch.s)
    DeleteElement(SJsonLogMessages.s(), 1)
    ProcedureReturn 1
    
  Else
    DeleteElement(SJsonLogMessages.s(), 1)
    DebugSJsonAddMessages("Ligne: " + Str(NumeroLigne.i) + " - " + NomProcedure.s + ": Echec - Le Patch '" + SJsonPatch.s + "' du Json '" + Str(SJsonID.i) + "' est invalide !")
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

; Système - Procédure de recherche du Patch.
Procedure.i IsFindSJsonPatch(SJsonID.i, SJsonPatch.s, NomProcedure.s, NumeroLigne.i = 0)
  
  PatchMemoryAdress.i = FindSJsonPatch(SJsonID.i, SJsonPatch.s, NumeroLigne.i)
  DeleteElement(SJsonLogMessages.s(), 1)
  
  If PatchMemoryAdress.i
    ProcedureReturn PatchMemoryAdress.i
    
  Else
    DebugSJsonAddMessages("Ligne: " + Str(NumeroLigne.i) + " - " + NomProcedure.s + ": Echec - le Patch '" + SJsonPatch.s + "' n'existe pas !")
    ProcedureReturn 0
      
  EndIf
  
EndProcedure

; Système - Procédure pour vérifier que le Json existe.
Procedure.b IsSJson(SJsonID.i, NomProcedure.s, NumeroLigne.i)
  
  If IsJSON(SJsonID.i)
    ProcedureReturn 1
    
  Else
    DebugSJsonAddMessages("Ligne: " + Str(NumeroLigne.i) + " - " + NomProcedure.s + ": Echec - Le Json '" + Str(SJsonID.i) + "' n'existe pas !")
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

; Système - Procédure pour vérifier que la valeur du Json est valide.
Procedure.b IsSJsonValue(SJsonID.i, NomProcedure.s, NumeroLigne.i)
  
  If JSONValue(SJsonID.i)
    ProcedureReturn 1
    
  Else
    DebugSJsonAddMessages("Ligne: " + Str(NumeroLigne.i) + " - " + NomProcedure.s + ": Echec - Le Json '" + Str(SJsonID.i) + "' n'est pas initialisé !")
    ProcedureReturn 0
    
  EndIf
  
EndProcedure
;}

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

; Effacer entièrement le Json, à utiliser avec une grande précaution car le Json sera complétement effacé.
Procedure.b ClearSJson(SJsonID.i, NumeroLigne.i = 0)
  
  ClearList(SJsonLogMessages.s())
  
  If IsSJson(SJsonID.i, "ClearSJson", NumeroLigne.i) And IsSJsonValue(SJsonID.i, "ClearSJson", NumeroLigne.i)
    
    If SJsonCase.b = 0
      JSONMemoryAdress.i = CreateJSON(SJsonID.i)
    Else
      JSONMemoryAdress.i = CreateJSON(SJsonID.i, #PB_JSON_NoCase)
    EndIf
    
    If JSONMemoryAdress.i = 0
      DebugSJsonAddMessages("Ligne: " + Str(NumeroLigne.i) + " - ClearSJson: Echec - Le Json '" + Str(SJsonID.i) + "' n'as pas pu être éffacé, Erreur de mémoire !")
      ProcedureReturn 0
      
    EndIf
    
    If SetJSONObject(JSONValue(SJsonID.i))
      DebugSJsonAddMessages("Ligne: " + Str(NumeroLigne.i) + " - ClearSJson: Succès - Le Json '" + Str(SJsonID.i) + "' à été éffacé avec succès !")
      ProcedureReturn 1
      
    Else
      DebugSJsonAddMessages("Ligne: " + Str(NumeroLigne.i) + " - ClearSJson: Echec - Le Json '" + Str(SJsonID.i) + "' n'as pas pu être éffacé, Erreur de mémoire !")
      ProcedureReturn 0
      
    EndIf
    
  Else
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

; Création des éléments dans le Json.
Procedure.b CreateSJsonPatch(SJsonID.i, SJsonPatch.s, NumeroLigne.i = 0)
  
  ClearList(SJsonLogMessages.s())
  
  If IsSJson(SJsonID.i, "CreateSJsonPatch", NumeroLigne.i) And IsCheckSJsonPatch(SJsonID.i, SJsonPatch.s, "CreateSJsonPatch", NumeroLigne.i)
    PatchMemoryAdress.i = FindSJsonPatch(SJsonID.i, SJsonPatch.s)
    
    If Not PatchMemoryAdress.i
      DeleteElement(SJsonLogMessages.s(), 1) 
      
      If IsSJsonValue(SJsonID.i, "CreateSJsonPatch", NumeroLigne.i)
        PatchMemoryAdress.i = JSONValue(SJsonID.i)
        
        NombreSlash.i = CountString(SJsonPatch.s, "\")
        
        If NombreSlash.i = 0
          
          If IsSJsonValue(SJsonID.i, "CreateSJsonPatch", NumeroLigne.i)
            If AddJSONMember(JSONValue(SJsonID.i), SJsonPatch.s)
              DebugSJsonAddMessages("Ligne: " + Str(NumeroLigne.i) + " - CreateSJsonPatch: Succès - Le Patch '" + SJsonPatch.s + "' a été créé dans le Json '" + Str(SJsonID.i) + "'.")
              ProcedureReturn 1
              
            Else
              DebugSJsonAddMessages("Ligne: " + Str(NumeroLigne.i) + " - CreateSJsonPatch: Echec - Le Patch '" + SJsonPatch.s + "' n'a pas pu être créé dans le Json '" + Str(SJsonID.i) + "', Erreur de mémoire.")
              ProcedureReturn 0
              
            EndIf
          EndIf
          
        ElseIf NombreSlash.i > 0
          
          For Index.i = 0 To NombreSlash.i
            
            MembreName.s = StringField(SJsonPatch.s, Index.i + 1, "\")
            Trouver.b = 0
            
            If JSONType(PatchMemoryAdress.i) = 5 ; La valeur est t'elle de type Objet ?
              
              If ExamineJSONMembers(PatchMemoryAdress.i) ; Cherchons dans ces membres.
                While NextJSONMember(PatchMemoryAdress.i); Tant qu'il y a des Membres.
                  If JSONMemberKey(PatchMemoryAdress.i) = MembreName.s ; Si le Nom du Membre en cours d'examination est le même que celui qu'on cherche.
                    PatchMemoryAdress.i = JSONMemberValue(PatchMemoryAdress.i)
                    Trouver.b = 1
                    Break
                  EndIf
                Wend
              EndIf
              
              If Trouver.b = 1
                Continue
                
              ElseIf Trouver.b = 0
                
                If JSONType(PatchMemoryAdress.i) <> 5
                  
                  If AddJSONMember(SetJSONObject(PatchMemoryAdress.i), MembreName.s)
                    DebugSJsonAddMessages("Ligne: " + Str(NumeroLigne.i) + " - CreateSJsonPatch: Succès - Le Membre '" + MembreName.s + "' a été créé dans le Json '" + Str(SJsonID.i) + "'.")
                    PatchMemoryAdress.i = JSONMemberValue(PatchMemoryAdress)
                    Continue
                    
                  Else
                    DebugSJsonAddMessages("Ligne: " + Str(NumeroLigne.i) + " - CreateSJsonPatch: Echec - Le Membre '" + MembreName.s + "' n'a pas pu être créér dans le Json '" + Str(SJsonID.i) + "', Erreur de mémoire.")
                    ProcedureReturn 0
                    
                  EndIf
                  
                Else
                  
                  If AddJSONMember(PatchMemoryAdress.i, MembreName.s)
                    DebugSJsonAddMessages("Ligne: " + Str(NumeroLigne.i) + " - CreateSJsonPatch: Succès - Le Membre '" + MembreName.s + "' a été créé dans le Json '" + Str(SJsonID.i) + "'.")
                    PatchMemoryAdress.i = JSONMemberValue(PatchMemoryAdress)
                    Continue
                    
                  Else
                    DebugSJsonAddMessages("Ligne: " + Str(NumeroLigne.i) + " - CreateSJsonPatch: Echec - Le Membre '" + MembreName.s + "' n'a pas pu être créé dans le Json '" + Str(SJsonID.i) + "', Erreur de mémoire.")
                    ProcedureReturn 0
                    
                  EndIf
                  
                EndIf
                
              EndIf
              
            Else
              
              For Index2 = Index To NombreSlash.i
                
                MembreName.s = StringField(SJsonPatch.s, Index2.i + 1, "\")
                
                If AddJSONMember(SetJSONObject(PatchMemoryAdress.i), MembreName.s)
                  DebugSJsonAddMessages("Ligne: " + Str(NumeroLigne.i) + " - CreateSJsonPatch: Succès - Le Membre '" + MembreName.s + "' a été créé dans le Json '" + Str(SJsonID.i) + "'.")
                  PatchMemoryAdress.i = JSONMemberValue(PatchMemoryAdress.i)
                  Continue
                  
                Else
                  DebugSJsonAddMessages("Ligne: " + Str(NumeroLigne.i) + " - CreateSJsonPatch: Echec - Le Membre '" + MembreName.s + "' n'a pas pu être créé dans le Json '" + Str(SJsonID.i) + "', Erreur de mémoire.")
                  ProcedureReturn 0
                  
                EndIf
                
              Next
              
              Break
              
            EndIf
            
          Next
          
          DebugSJsonAddMessages("Ligne: " + Str(NumeroLigne.i) + " - CreateSJsonPatch: Succès - Le Patch '" + SJsonPatch.s + "' à été créé avec succès dans le Json '" + Str(SJsonID.i) + "' !")
          ProcedureReturn 1
          
        EndIf
        
      EndIf
      
    Else
      DeleteElement(SJsonLogMessages.s(), 1)
      DebugSJsonAddMessages("Ligne: " + Str(NumeroLigne.i) + " - CreateSJsonPatch: Echec - le Patch '" + SJsonPatch.s + "' existe déjà !")
      ProcedureReturn 0
      
    EndIf
    
  Else
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

; Effacee entièrement un patch dans le Json ainsi que ses valeurs, à utiliser avec précaution car efface tout le Patch.
Procedure.b ClearSJsonPatch(SJsonID.i, SJsonPatch.s, NumeroLigne.i = 0)
  
  ClearList(SJsonLogMessages.s())
  
  If IsSJson(SJsonID.i, "ClearSJsonPatch", NumeroLigne.i) And IsCheckSJsonPatch(SJsonID.i, SJsonPatch.s, "ClearSJsonPatch", NumeroLigne.i)
    PatchMemoryAdress.i = IsFindSJsonPatch(SJsonID.i, SJsonPatch.s, NomProcedure.s, NumeroLigne.i)
    
    If PatchMemoryAdress.i <> 0
      SetJSONNull(PatchMemoryAdress.i)
      DebugSJsonAddMessages("Ligne: " + Str(NumeroLigne.i) + " - ClearSJsonPatch: Succès - Le Patch '" + SJsonPatch.s + "' a été effacé !")
      ProcedureReturn 1
      
    Else
      ProcedureReturn 0
      
    EndIf
    
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

; Défini la valeur (Sous forme de chaîne de caractères) du Patch.
Procedure.b SetSJsonPatchString(SJsonID.i, SJsonPatch.s, SJsonPatchValue.s, NumeroLigne.i = 0)
  
  ClearList(SJsonLogMessages.s())
  
  If IsSJson(SJsonID.i, "SetSJsonPatchString", NumeroLigne.i) And IsCheckSJsonPatch(SJsonID.i, SJsonPatch.s, "SetSJsonPatchString", NumeroLigne.i)
    PatchMemoryAdress.i = IsFindSJsonPatch(SJsonID.i, SJsonPatch.s, NomProcedure.s, NumeroLigne.i)
    
    If PatchMemoryAdress.i <> 0
      
      If JSONType(PatchMemoryAdress.i) = #PB_JSON_Object
        DebugSJsonAddMessages(Str(NumeroLigne.i) + " - SetSJsonPatchString: Echec - Le Patch '" + SJsonPatch.s + "' contient un ou plusieurs Membres, supprimez le ou les Membres avec la commande 'ClearSJsonPatch()' avant d'y mettre un String !")
        ProcedureReturn 0
        
      ElseIf JSONType(PatchMemoryAdress.i) = #PB_JSON_String
        
        If GetJSONString(PatchMemoryAdress.i) > ""
          DebugSJsonAddMessages(Str(NumeroLigne.i) + " - SetSJsonPatchString: Avertissement - Le String du Patch '" + SJsonPatch.s + "' était '" + GetJSONString(PatchMemoryAdress.i) + "' et a été remplacé par '" + SJsonPatchValue.s + "' !")
        EndIf
        
      ElseIf JSONType(PatchMemoryAdress.i) = #PB_JSON_Array
        DebugSJsonAddMessages(Str(NumeroLigne.i) + " - SetSJsonPatchString: Echec - Le Patch '" + SJsonPatch.s + "' contient un Tableau, supprimez le Tableau avec la commande 'RemoveSJsonPatchArray()' avant d'y mettre un String !")
        ProcedureReturn 0
        
      Else
        DebugSJsonAddMessages(Str(NumeroLigne.i) + " - SetSJsonPatchString: Succès - Le Patch '" + SJsonPatch.s + "' contient désormais le String '" + SJsonPatchValue.s + "' !")
        
      EndIf
      
      SetJSONString(PatchMemoryAdress.i, SJsonPatchValue.s)
      ProcedureReturn 1
      
    Else
      ProcedureReturn 0
      
    EndIf
    
  Else
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

; Récupère la valeur (Sous forme de chaîne de caractères) du Patch.
Procedure.b GetSJsonPatchString(SJsonID.i, SJsonPatch.s, NumeroLigne.i = 0)
  
  ClearList(SJsonLogMessages.s())
  
  If IsSJson(SJsonID.i, "GetSJsonPatchString", NumeroLigne.i) And IsCheckSJsonPatch(SJsonID.i, SJsonPatch.s, "GetSJsonPatchString", NumeroLigne.i)
    PatchMemoryAdress.i = IsFindSJsonPatch(SJsonID.i, SJsonPatch.s, NomProcedure.s, NumeroLigne.i)
    
    If PatchMemoryAdress.i <> 0
      
      If JSONType(PatchMemoryAdress.i) = #PB_JSON_Object
        DebugSJsonAddMessages(Str(NumeroLigne.i) + " - GetSJsonPatchString: Echec - Le Patch '" + SJsonPatch.s + "' contient un ou plusieurs Membres, pas un String !")
        ProcedureReturn 0
        
      ElseIf JSONType(PatchMemoryAdress.i) = #PB_JSON_Array
        DebugSJsonAddMessages(Str(NumeroLigne.i) + " - GetSJsonPatchString: Echec - Le Patch '" + SJsonPatch.s + "' contient un Tableau, pas un String !")
        ProcedureReturn 0
        
      ElseIf JSONType(PatchMemoryAdress.i) = #PB_JSON_Null
        DebugSJsonAddMessages(Str(NumeroLigne.i) + " - GetSJsonPatchString: Echec - Le Patch '" + SJsonPatch.s + "' ne contient aucune donnée (NULL) !")
        ProcedureReturn 0
        
      ElseIf JSONType(PatchMemoryAdress.i) = #PB_JSON_String
        DebugSJsonAddMessages(Str(NumeroLigne.i) + " - GetSJsonPatchString: Succès - Le Patch '" + SJsonPatch.s + "' contient le String '" + GetJSONString(PatchMemoryAdress.i) + "' !")
        SJsonPatchString.s = GetJSONString(PatchMemoryAdress.i)
        ProcedureReturn 1
        
      Else
        DebugSJsonAddMessages(Str(NumeroLigne.i) + " - GetSJsonPatchString: Echec - Le Patch '" + SJsonPatch.s + "' contient une donnée inconnue !")
        ProcedureReturn 0
        
      EndIf
      
    Else
      ProcedureReturn 0
      
    EndIf
    
  Else
    ProcedureReturn 0
    
  EndIf
  
EndProcedure

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

#MyJson = 1

If Not CreateSJson(#MyJson, #PB_Compiler_Line): DebugSJsonMessages(): EndIf
If Not CreateSJsonPatch(#MyJson, "Famille\Membres\Parent\Aurelie", #PB_Compiler_Line): DebugSJsonMessages(): EndIf
If Not SetSJsonPatchString(#MyJson, "Famille\Membres\Parent\Aurelie", "Abcd", #PB_Compiler_Line): DebugSJsonMessages(): EndIf
If GetSJsonPatchString(#MyJson, "Famille\Membres\Parent\Aurelie", #PB_Compiler_Line): Debug SJsonPatchString.s: Else: DebugSJsonMessages(): EndIf

Debug "-------------------------------------------------------------------------"
Debug ComposeJSON(#MyJson, #PB_JSON_PrettyPrint)
Debug "-------------------------------------------------------------------------"
Exemple:

Code : Tout sélectionner

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

#MyJson = 1

Procedure SetNom(Nom$)
  CreateSJsonPatch(#MyJson, Nom$ + "\Nom", #PB_Compiler_Line)
  SetSJsonPatchString(#MyJson, Nom$ + "\Nom", Nom$, #PB_Compiler_Line)
EndProcedure
Procedure SetPrenom(Nom$, Prenom$)
  CreateSJsonPatch(#MyJson, Nom$ + "\Prenom", #PB_Compiler_Line)
  SetSJsonPatchString(#MyJson, Nom$ + "\Prenom", Prenom$, #PB_Compiler_Line)
EndProcedure
Procedure SetTelephoneFixe(Nom$, TelephoneFixe$)
  CreateSJsonPatch(#MyJson, Nom$ + "\Telephone Fixe", #PB_Compiler_Line)
  SetSJsonPatchString(#MyJson, Nom$ + "\Telephone Fixe", TelephoneFixe$, #PB_Compiler_Line)
EndProcedure
Procedure SetTelephoneMobile(Nom$, TelephoneMobile$)
  CreateSJsonPatch(#MyJson, Nom$ + "\Telephone Mobile", #PB_Compiler_Line)
  SetSJsonPatchString(#MyJson, Nom$ + "\Telephone Mobile", TelephoneMobile$, #PB_Compiler_Line)
EndProcedure
Procedure SetAdresse(Nom$, Adresse$)
  CreateSJsonPatch(#MyJson, Nom$ + "\Adresse", #PB_Compiler_Line)
  SetSJsonPatchString(#MyJson, Nom$ + "\Adresse", Adresse$, #PB_Compiler_Line)
EndProcedure
Procedure SetCodePostal(Nom$, CodePostal$)
  CreateSJsonPatch(#MyJson, Nom$ + "\Code Postal", #PB_Compiler_Line)
  SetSJsonPatchString(#MyJson, Nom$ + "\Code Postal", CodePostal$, #PB_Compiler_Line)
EndProcedure
Procedure SetVille(Nom$, Ville$)
  CreateSJsonPatch(#MyJson, Nom$ + "\Ville", #PB_Compiler_Line)
  SetSJsonPatchString(#MyJson, Nom$ + "\Ville", Ville$, #PB_Compiler_Line)
EndProcedure

Procedure.s GetNom(Nom$)
  CreateSJsonPatch(#MyJson, Nom$ + "\Nom", #PB_Compiler_Line)
  GetSJsonPatchString(#MyJson, Nom$ + "\Nom", #PB_Compiler_Line)
  ProcedureReturn SJsonPatchString.s
EndProcedure
Procedure.s GetPrenom(Nom$)
  CreateSJsonPatch(#MyJson, Nom$ + "\Prenom", #PB_Compiler_Line)
  GetSJsonPatchString(#MyJson, Nom$ + "\Prenom", #PB_Compiler_Line)
  ProcedureReturn SJsonPatchString.s
EndProcedure
Procedure.s GetTelephoneFixe(Nom$)
  CreateSJsonPatch(#MyJson, Nom$ + "\Telephone Fixe", #PB_Compiler_Line)
  GetSJsonPatchString(#MyJson, Nom$ + "\Telephone Fixe", #PB_Compiler_Line)
  ProcedureReturn SJsonPatchString.s
EndProcedure
Procedure.s GetTelephoneMobile(Nom$)
  CreateSJsonPatch(#MyJson, Nom$ + "\Telephone Mobile", #PB_Compiler_Line)
  GetSJsonPatchString(#MyJson, Nom$ + "\Telephone Mobile", #PB_Compiler_Line)
  ProcedureReturn SJsonPatchString.s
EndProcedure
Procedure.s GetAdresse(Nom$)
  CreateSJsonPatch(#MyJson, Nom$ + "\Adresse", #PB_Compiler_Line)
  GetSJsonPatchString(#MyJson, Nom$ + "\Adresse", #PB_Compiler_Line)
  ProcedureReturn SJsonPatchString.s
EndProcedure
Procedure.s GetCodePostal(Nom$)
  CreateSJsonPatch(#MyJson, Nom$ + "\Code Postal", #PB_Compiler_Line)
  GetSJsonPatchString(#MyJson, Nom$ + "\Code Postal", #PB_Compiler_Line)
  ProcedureReturn SJsonPatchString.s
EndProcedure
Procedure.s GetVille(Nom$)
  CreateSJsonPatch(#MyJson, Nom$ + "\Ville", #PB_Compiler_Line)
  GetSJsonPatchString(#MyJson, Nom$ + "\Ville", #PB_Compiler_Line)
  ProcedureReturn SJsonPatchString.s
EndProcedure

CreateSJson(#MyJson, #PB_Compiler_Line, 0)

Nom$ = "Durand"

SetNom(Nom$)
SetPrenom(Nom$, "Luck")
SetTelephoneFixe(Nom$, "05 49 88 56 31")
SetTelephoneMobile(Nom$, "06 14 32 15 57")
SetAdresse(Nom$, "24 Rue des clous Rouillé")
SetCodePostal(Nom$, "45623")
SetVille(Nom$, "Reine")

Debug GetNom(Nom$)
Debug GetPrenom(Nom$)
Debug GetTelephoneFixe(Nom$)
Debug GetTelephoneMobile(Nom$)
Debug GetAdresse(Nom$)
Debug GetCodePostal(Nom$)
Debug GetVille(Nom$)

Debug "-------------------------------------------------------------------------"
Debug ComposeJSON(#MyJson, #PB_JSON_PrettyPrint)
Debug "-------------------------------------------------------------------------"
Dernière modification par Shadow le mer. 25/mars/2020 19:18, 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
Mindphazer
Messages : 700
Inscription : mer. 24/août/2005 10:42

Re: SimplyJson

Message par Mindphazer »

On critique pas
Simplement tu présentes ton truc en écrivant :
Voici un petit programme pour faire du Json facilement.
WTF ?? Explique à quoi sert ton code, ce qu'il fait, concrètement !
Bureau : Win10 64bits
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Re: SimplyJson

Message par TazNormand »

@Shadow : je te l'ai déjà dit dans ton autre message, développe tes idées avant de balancer ton code comme ça.

C'est quoi la finalité ? ça va servir à quoi, à qui, dans quel contexte ?

On a compris que ce n'est pas un tuto, mais on n'a pas compris l'utilité, d'autant que PB fournit des fonctions pour le JSON en natif beaucoup plus simples que ton usine à gaz.

Soit tu expliques vraiment, et tu commentes suffisamment ton code, soit moi ou un autre modo on locke ton message !
Image
Image
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: SimplyJson

Message par Shadow »

Soit tu expliques vraiment, et tu commentes suffisamment ton code, soit moi ou un autre modo on locke ton message !
Lol le gros chantage :roll:
Ceux qui suivent le sujet savent de quoi je parle, pas les autres :wink:
Mais puisque tu insiste tu va être servis...
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