我正在使用 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 中更改。

谁能提出另一种序列化和反序列化数据的方法来保留指针?

到目前为止,我一直在使用一些链接进行研究:
  • http://blog.adamcameron.me/2013/01/random-unsuccessful-experiment.html
  • http://www.simonwhatley.co.uk/the-inner-workings-of-a-coldfusion-array-and-structure
  • 最佳答案

    使用 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/

    10-12 19:57