![]() |
JSON Wert zufügen
Hallo allerseits.
Ich hatte schon mal so meine Schwierigkeiten mit JSON und da wurde mir ja prima geholfen. Jetzt ein unerwartetes neues das hoffentlich letzte Problem . Im Netz und hier und da habe ich gesucht, aber als Kind der XML Welt nur unverständliches Zeug gefunden. Folgende JSON:
Code:
Ich muss zur Node "Lapforce" schlicht die Sprache Czech - also "Czech": null, - hinzufügen, einfügen, anpappen. Mehr nicht. Kann das jemand mit den Bordmitteln von Delphi 10.4 ausführen?
{
"Version": "1", "ID": "Zeptor", "IncompatibleIds": ["Jokola"], "Dependent": null, "Lapforce": { "English": "much", "French": null, "German": "Viel", "Italian": null, "Japanese": null, "Korean": null, "Polish": null, "Russian": null, "Spanish": null, "Taiwanese": null }, "Name": "Turandot", "Contact": "", "Image" : null } Ich brauche das nur diese eine Mal und dafür dann JSON studieren ........:( geldis |
AW: JSON Wert zufügen
Wenn das Objekt als TJSONValue vorliegt:
Delphi-Quellcode:
var LValue : TJSONValue;
LValue := TJSONObject.ParseJSONValue(<Der JSON String>); TJSONObject(AValue.FindValue('Lapforce')).AddPair('Czech', TJSONNull.Create); |
AW: JSON Wert zufügen
Zitat:
|
AW: JSON Wert zufügen
@Union
besten Dank, klappt prima. Jetzt weiß ich auch warum das Pair heißt. Und natürlich bei meinem Glück kommt dann noch was: Code: { "Version": "1", "ID": "Zeptor", "IncompatibleIds": ["Jokola"], "Dependent": null, "Lapforce": { "English": "much", "French": null, "German": "Viel", "Italian": null, "Japanese": null, "Korean": null, "Polish": null, "Russian": null, "Spanish": null, "Taiwanese": null }, "Score": [ { "English": "much", "French": null, "German": "Viel", "Italian": null, "Japanese": null, "Korean": null, "Polish": null, "Russian": null, "Spanish": null, "Taiwanese": null } ], "Name": "Turandot", "Contact": "", "Image" : null } </Code> Die Node Score ist mit eckigen Klammern versehen, vermutlich also sowas wie ein Array. Er fügt den "Czech" Wert dazu, NICht die eckige Klammer. Was jetzt wenn ich nochmal fragen darf. geldis @UweRaabe Danke für die Hilfe. |
AW: JSON Wert zufügen
Die TJSONValue Werte liegen in einem TJSONArray vor.
|
AW: JSON Wert zufügen
oder der rechte Teil (Value) vom Pair
|
AW: JSON Wert zufügen
Nach absolviertem Broterwerb : Da bin ich wieder.
Also ein Array, sehr schön. Am Beispiel oben orientiert würde ich also ein TJSONArray deklarieren
Delphi-Quellcode:
Jetzt habe ich eine Array. Und dann bin ich mal wieder am Ende.
Var
var LValue : TJSONValue; KArray : TJSonArray; .... LValue := TJSONObject.ParseJSONValue(<Der JSON String>); KArray := TJsonArray(LValue.FindValue('Score'); geldis |
AW: JSON Wert zufügen
Du willst kein Array (viele Values), sondern ein Object (viele Pairs mit Name+Value) haben.
|
AW: JSON Wert zufügen
Moin Moin.
Nützt mir jetzt auch nichts. Ich kriege den Bogen nicht raus. :roll: geldis |
AW: JSON Wert zufügen
Auf die einzelnen TJSONValue im TJSONArray greifst Du über die Get - Methode zu. Die erhaltenen Objekte verarbeitest Du analog mit AddPair.
Ich kann Dir nur empfehlen, dich in die Delphi JSON Frameworks einzuarbeiten. Falls Du künftig noch länger programmieren wirst, kommst Du nämlich um JSON (und u.U. BSON, Protocol Buffers etc.) nicht herum. |
AW: JSON Wert zufügen
In meiner Gruppe hier haben für für jeden Berecih eine Spezialistn. Ich amüsiere mich mit Fortran, Cobol und XML (IT Studium 1988), einer mit DirectX, einer mit SQL, einer mit SAP+JSON usw. Und ausgerechnet der JSON Mensch ist krank, sonst hätte ich hier gar nicht gefragt. Und für das was wir hier machen brauchten wir JSON bisher nur in Extremfällen. Insofern lasse ich das dann links liegen.
Mir erschließt sich das Gefummel mit Objekten und Dutzenden von Typen nicht. Und ich sehe keinen Vorteil gegenüber XML. Naja, ich lass das jetzt mal alles liegen und frage auch besser nicht mehr. Allein der Kommentar von Herrn Raabe hat mit schon gereicht. Und rumrätseln mag ich auch nicht. geldis |
AW: JSON Wert zufügen
Zitat:
Auch COBOL unterstützt JSON inzwischen direkt in den meisten Dialekten (z.b. IBM, MF mit json parse into). Du könntest also sogar deine "Hauptsprache" dafür verwenden. |
AW: JSON Wert zufügen
Zitat:
|
AW: JSON Wert zufügen
Moin Moin.
Kann nicht jemand mal geldis die entsprechenden Zeilen hier posten? Ich hatte bisher das Forum auch und gerade als Hilfe verstanden, quasi wie ein Handbuch. Sicher ist der Gedanke des Ansporns und Motivation auch ein gute Sache. Aber aus meiner Sicht kann man das auch übertreiben. Seinerzeit hatte ich hier echt Probleme mit DDSToPDF (DirectDrawSurface). Allerlei Tipps aus der Community haben mich dann tatsächlich motiviert. Mit Hilfe eines Spezialisten habe ich dann die Sache gelöst und einiges gelernt. Aber ich bin hier aus Hobby unterwegs. geldis hat ja offensichtlich versucht die Sache zu lösen, aber auch ich kenne des Brett vor dem Kopf (jedenfalls die Maserung). Dummerweise habe ich keine Ahnung von JSON sonst würde ich das jetzt aufklären. Die JSON ist als Beispiel ja weiter oben vorhanden, kann mal jemand so freundlich sein? creehawk |
AW: JSON Wert zufügen
Hier das funktionierende Codefragment.
Delphi-Quellcode:
uses
System.JSON; const JSONDATA = '{"Version":"1","ID":"Zeptor","IncompatibleIds":["Jokola"],"Dependent":null,' + '"Lapforce":{"English":"much","French":null,"German":"Viel","Italian":null,' + '"Japanese":null,"Korean":null,"Polish":null,"Russian":null,"Spanish":null,' + '"Taiwanese":null},"Score":[{"English":"much","French":null,"German":' + '"Viel","Italian":null,"Japanese":null,"Korean":null,"Polish":null,' + '"Russian":null,"Spanish":null,"Taiwanese":null}],"Name":"Turandot","Contact":"","Image":null}'; procedure ProcessJSON; procedure InsertCzech(AObject : TJSONValue); begin TJSONObject(AObject).AddPair('Czech', TJSONNull.Create); end; var LData : TJSONValue; LArray : TJSONArray; LItem : TJSONValue; begin LData := TJSONObject.ParseJSONValue(JSONDATA); LItem := LData.FindValue('Lapforce'); InsertCzech(LItem); LArray := TJsonArray(LData.FindValue('Score')); for LItem in LArray do InsertCzech(TJSONObject(LItem)); end; |
AW: JSON Wert zufügen
Guten Morgen.
@Union Vielen und herzlichen Dank. @creehawk Danke. geldis |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz