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