我正在使用 WDDX 将 ColdFusion 结构存储在数据库中,并且我想维护这些指针。这是一个示例(抱歉,速记符号可能充满错误 b/c 我几乎从未使用过):
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 更改为“blue”,tshirt.back.color.selected 和 tshirt.front.color.selected 也将是“blue”。
但是,假设我 WDDX tshirt 然后 unWDDX 它。当我将 tshirt.color.selected 更改为“白色”时,它不会在 tshirt.front.color.selected 或 tshirt.back.color.selected 中更改。
谁能提出另一种序列化和反序列化数据的方法来保留指针?
到目前为止,我一直在使用一些链接进行研究:
最佳答案
使用 ObjectSave() ,CF9 新增:
<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
关于pointers - 如何 WDDX ColdFusion 结构并维护指针或递归,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25436527/