JSON sous Lazarus : problème
Citation:
Envoyé par
BeanzMaster
Quel tuto ? et tu bloques sur quoi exactement ?
Bonjour,
Je réponds à la place de "NicCo" car j'ai apparemment suivi le même chemin mais le problème est différent. L'exemple provient du tutoriel présenté ici :
https://darrylsite.developpez.com/tu...s/pascal/json/
Ma problématique est la suivante : si je charge le code présenté au §V-A. Parcours des données JSON" , j'obtiens les erreurs suivantes lors de la compilation :
Citation:
Compilation du projet - Cible : jsonparser.exe : Code de sortie 1 - Erreurs : 7 - Conseils : 2
Hint: Start of reading config file F:\lazarus-1.6\fpc\3.0.2\bin\x86_64-win64\fpc.cfg
Hint: End of reading config file F:\lazarus-1.6\fpc\3.0.2\bin\x86_64-win64\fpc.cfg
jsonparser.lpr(61,1) Error: Undefined symbol: INIT$_$JSONPARSER
jsonparser.lpr(61,1) Error: Undefined symbol: FINALIZE$_$JSONPARSER
jsonparser.lpr(61,1) Error: Undefined symbol: RESSTR_$JSONPARSER_$$_START
jsonparser.lpr(61,1) Error: Undefined symbol: RESSTR_$JSONPARSER_$$_END
jsonparser.lpr(61,1) Error: Undefined symbol: JSONPARSER$_$TJSONPARSER_$__$$_PARSE$$TJSONDATA
jsonparser.lpr(61,1) Error: Undefined symbol: VMT_$JSONPARSER_$$_TJSONPARSER
jsonparser.lpr(61,1) Error: Undefined symbol: JSONPARSER$_$TJSONPARSER_$__$$_CREATE$TSTREAM$TJSONOPTIONS$$TJSONPARSER
Auriez-vous un conseil pour corriger ces erreurs ?
Merci pour votre aide.
Marc le Lorrain
Ecriture de data dans un objet JSON
Bonjour,
J'ai suivi le tuto sur les manipulations de fichier json.
Je souhaiterai écrire un programme avec une ihm simple pour générer un fichier de la forme suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11
| {
"Version1": {
"Temperature": "10",
"Vitesse":"100"
},
"Version2": {
"Temperature": "20",
"Vitesse":"100"
"Pression":"400"
}
} |
En reproduisant le tuto, j’arrive bien à générer les TJSONObject Version1 et Version2 mais ensuite je ne parviens pas à créer les data en dessous. Je ne veux pas passer par un tableau TJSONArray.
Le but est que chaque version ait des paramètres supplémentaires
Ensuite, dans une autre application, j'aimerai lister les (ou tester l'existence des) objets de niveau 1 Version1, version2, ... puis pour chaque object les paires clés/valeurs présentes.
Si quelqu'un peut me mettre quelques snippets de code exemple ? Merci d'avance
1 pièce(s) jointe(s)
Ecriture de data dans un objet JSON
voici mon test :
Pièce jointe 582985
et le code s'y rapportant
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
procedure TForm1.btnAddClick(Sender: TObject);
var cont : TJSONObject;
str : TMemoryStream;
i : Integer;
bNewJson: Boolean;
begin
bNewJson:=False;
with StringGrid1 do
begin
for i:=1 to RowCount-1 do
begin
if (Cells[0,i]<>'') and (Cells[1,i]<>'') then
begin
if Not bNewJson then
begin
JS := TJSONObject.Create();
JS.add('Version'+ComboBox1.Text, TJSONArray.Create);
bNewJson:=True;
end;
cont := TJSONObject.Create([''+Cells[0,i]+'', Cells[1,i]]);
JS.Arrays['Version'+ComboBox1.Text].Add(cont);
JS.Items.ad;
end;
end;
if bNewJson then
begin
Memo1.Text:= JS.AsJSON;
with TJSONStreamer.Create(nil) do try
str := TMemoryStream.Create;
try
str.Write(JS.FormatJSON, length(JS.FormatJSON));
str.SaveToFile('data.json');
finally
str.Free;
end;
finally
Free;
end;
end;
end;
end; |
Je voudrais faire sans le TJSONArray.Create mais en ajoutant un child à Version'+ComboBox1.Text avec Cells[0,i] comme clé et Cells[1,i] comme valeur.
Le but ensuite sera d'ajouter des sections versionXX avec des paramètres supplémentaires et cela dans un même fichier JSON.
Au final, je veux pouvoir ouvrir un json et l'utilisateur sélectionnera un numéro de version et j'afficherai les paramètres s'y rapportant.
Le but est de faire lire le fichier de paramètres par un automate industriel avec un format structuré et reconnu par contre je ne veux pas que l'utilisateur final ait à écrire à la main un json avec le risque de mauvaise structure de fichier d'ou c'est utilitaire très basique