SimplyJson
Publié : sam. 21/mars/2020 23:44
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:
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