Einzelnen Beitrag anzeigen

Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: JSONValue ändern

  Alt 16. Jul 2018, 10:22
Um den tieferen Sinn kurz zu erklären: Ich habe mir eine Art Universalklasse gebaut, die strukturierte Daten aus allen möglichen Quellen entgegen nehmen kann (z.B. XML oder eben JSON).

Die einzelnen Knoten innerhalb der Datenquelle spreche ich per XPath an. Für XML gibts da ja IDOMNodeSelect.SelectNode(XPath) und für JSON habe ich mir eine kleine Konvertierungsroutine geschrieben, die einen XML-XPath in einen JSON-XPath umwandelt, der von TJSONValue.TryGetValue(XPath) verstanden wird.

Von der Universalklasse leite ich dann spezialisierte Nachfahren ab, die das Parsen übernehmen. Innerhalb der Nachfahren behalte ich das eigentliche Datenobjekt im Speicher. Ich lese und schreibe die einzelnen Werte über Getter und Setter in der von TField bekannten Form .AsString, .AsInteger usw. Ganz am Ende gebe ich die manipulierten Daten dann wieder als strukturierte Texte aus.

Das funktioniert bei XML auch alles soweit wie geplant und einigermaßen performant (wenngleich keine gigantischen Datenmengen anfallen).

Bei JSON dagegen scheint die Implementierung im Delphi tatsächlich etwas bescheiden für solche Zwecke. Denn mit Remove/Add würde das zwar gehen, ändert dann aber auch die ursprünglich vorhandene Reihenfolge. Das mag aber nur ein Problem für Ästheten sein
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat