Как структурировать WDDX ColdFusion и поддерживать указатели или рекурсию
Я использую WDDX для хранения структуры ColdFusion в базе данных, и я хотел бы сохранить указатели. Вот пример (извините, сокращенная запись может быть полна ошибок, потому что я вряд ли когда-либо ее использую):
tshirt={color={selected="red",options=["red","blue","yellow","white"]}};
tshirt.front= {colors=tshirt.color,design="triangle",ink="green"};
tshirt.back= {color=tshirt.color,design="square",ink="black"};
В данный момент tshirt.front.color, tshirt.back.color и tshirt.color являются указателями на одну и ту же структуру. Если я изменю tshirt.color.selected на "синий", tshirt.back.color.selected и tshirt.front.color.selected также будет "синим".
Тем не менее, предположим, что я WDDX футболка, а затем unWDDX это. Когда я меняю tshirt.color.selected на "white", он не изменяется в tshirt.front.color.selected или tshirt.back.color.selected.
Кто-нибудь может предложить другой способ сериализации и десериализации данных, которые бы сохранили указатели?
Просто несколько ссылок, которые я использовал для исследования до сих пор:
1 ответ
Используйте ObjectSave (), новый в CF9:
Описание
Преобразует массив ColdFusion, CFC, объект DateTime, объект Java, запрос или структуру в сериализуемый двоичный объект и, при необходимости, сохраняет объект в файл.
Возвращает
Сериализуемое двоичное представление объекта.
<cfscript>
shirtdata = objectSave(tshirt);
tshirt2 = objectLoad(shirtdata);
tshirt2.color.selected = "blue";
writeOutput(tshirt2.front.colors.selected); // "blue" => reference kept
</cfscript>
Демонстрация в реальном времени: http://www.trycf.com/scratch-pad/pastebin?id=L0g211aD