2017-01-09 8 views
0

Может fpjson ручки нагрузки и сохранить следующую структуру из/в формат JSON:FreePascal: JSON и структура рекурсивных данных

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

Спасибо!

+0

Это не выглядит, как ваш реальный тип. Наверняка это «запись», а не «класс». –

+0

в этом вопрос? Я просто упростил структуру, чтобы показать ключевой момент, который представляет собой элементы: массив PTreeStructure; – xrfang

+0

Класс - ссылочный тип, который должен быть создан конструктором. Запись - это тип значения, который может быть назначен автоматически. Я бы подумал, что это важно. В любом случае, если вы должны использовать класс, пусть будет так. Но в этом случае я удивляюсь, что используйте 'PTreeStructure =^TTreeStructure', потому что это указатель на указатель. Как это распределить? –

ответ

0

FCL-JSON может хранить вложенные данные (объект может иметь массив объектов, которые могут иметь массив объектов, см прилагаемых примеров)

Но таким образом вы храните сами объекты, а не ссылки , что отлично подходит для дерева, но не для циклических структур.

A DAG может быть представлен путем хранения плоского массива со всеми данными, но хранить объекты с индексами или какой-либо уникальной идентификацией для каждой записи в массиве вместо указателей.

Если корень не первый элемент, вам нужно дополнительно хранить индекс/идентификатор корня где

+0

спасибо, кажется, мне лучше всего использовать fpjson и сделать загрузку/сохранить себя. – xrfang