2017-01-09 4 views
0

Kann Griff Last fpjson UND der folgenden Struktur speichern von/bis json:Freepascal: JSON und rekursive Datenstruktur

PTreeStructure = ^TTreeStructure; 
TTreeStructure = class 
    name: string; 
    value: Integer; 
    items: array of PTreeStructure; 
end; 

Dank!

+0

Das ist nicht wie Ihr richtiger Typ aussieht. Sicher ist es "Rekord" statt "Klasse". –

+0

spielt das eine Rolle? Ich habe nur die Struktur vereinfacht, um den Schlüsselpunkt zu zeigen, der Elemente ist: Array von PTreeStructure; – xrfang

+0

Eine Klasse ist ein Referenztyp, der von einem Konstruktor instanziiert werden muss. Ein Datensatz ist ein Werttyp, der automatisch zugeordnet werden kann. Ich hätte gedacht, dass es wichtig ist. Wie auch immer, wenn du eine Klasse benutzen musst, sei es. Aber in diesem Fall bin ich überrascht, dass die Verwendung 'PTreeStructure =^TTreeStructure' verwendet wird, da dies ein Zeiger auf einen Zeiger ist. Wie ist das zuzuordnen? –

Antwort

0

fcl-json können verschachtelte Daten (ein Objekt eine Reihe von Objekten, die eine Reihe von Objekten haben, sehen Sie die mitgelieferten Beispiele)

Aber auf diese Weise speichern Sie die Objekte selbst, nicht die Referenzen Das ist gut für einen Baum, aber nicht für Fahrradstrukturen.

Ein DAG kann dargestellt werden, indem ein flat-Array mit allen Daten gespeichert wird, aber Elemente mit Indizes oder eine Form von eindeutiger ID pro Datensatz in das Array statt Zeiger gespeichert werden.

Wenn Ihr Root nicht das erste Element ist, müssen Sie zusätzlich den Index/iD der Wurzel speichern irgendwo

+0

danke, es scheint, dass ich besser nur fpjson verwenden und laden/speichern Sie mich. – xrfang