Javascript 将画布序列化与元数据合并

Javascript 将画布序列化与元数据合并,javascript,html5-canvas,kineticjs,Javascript,Html5 Canvas,Kineticjs,我正在基于kinetic.js构建一个交互式环境。我希望能够保存和加载画布的状态以及元数据 我已经知道我可以使用stage.toJSON()来序列化/保存并使用Kinetic.Node.create(stageJson,'container')来加载。但我希望向序列化添加任意数据,以跟踪我的环境将定义/使用的其他属性 标准动能.js序列化示例: { "attrs": { "width": 578, "height": 200, "x": 0

我正在基于kinetic.js构建一个交互式环境。我希望能够保存和加载画布的状态以及元数据

我已经知道我可以使用
stage.toJSON()
来序列化/保存并使用
Kinetic.Node.create(stageJson,'container')
来加载。但我希望向序列化添加任意数据,以跟踪我的环境将定义/使用的其他属性

标准动能.js序列化示例:

{
    "attrs": {
        "width": 578,
        "height": 200,
        "x": 0,
        "y": 0
    },
    "nodeType":"Shape",
    "shapeType":"Rect"
}
我希望能够保存/加载的内容示例:

{
    "attrs": {
        "width": 578,
        "height": 200,
        "x": 0,
        "y": 0
    },
    "nodeType":"Shape",
    "shapeType":"Rect",
    "metaData": {"foo": "bar"}
}
这里最好的方法是什么?在传递元数据之前,我可以对序列化和加载函数进行hack/wrapp,以添加/拉出元数据,但这看起来很笨拙,很难实现,特别是当有很多嵌套层和形状需要解析时。我可以保存两个完全独立的序列化,一个由kinetic.js生成,另一个由我自己的代码生成,但同样笨拙。有谁有更好的主意吗?

toJSON()
序列化了所有stage(
Node
)的属性。
我没有尝试过,但您似乎可以使用
setAttr(key,val)
将自己的属性添加到stage中。在设置它们之后,它们将被序列化,我假设它们也被反序列化


请注意,这并不完全是您所要求的,因为额外的数据不在JSON的根级别,而是在
attrs
子对象中,我可能很傻,但似乎没有
getAttr(key)
方法,只是一种鸟枪式的
getAttrs()
。奇怪。
getAttrs().keyName
会很好,或者显然
getAttrs()['keyName']