3

我怎样才能JSON.stringify获得以下数据结构?

var Records = {
    1357775376232: {
        pageX: 0,
        pageY: 0,
        scrollLeft: 0,
        scrollTop: 0,
        target: #document,
        type: null,
        value: undefined
    },
    1357775376243: {
        pageX: 69,
        pageY: 10,
        scrollLeft: 0,
        scrollTop: 0,
        target: <a>,
        type: "click",
        value: ""
    }
    // ...etc...
};
4

2 回答 2

4

看起来这个对象包含对标签的引用document和对a标签的引用。在删除此类引用之前,您将无法对其进行序列化。

一个简单的解决方案是:

var arrayWithRefs = [...];
var arrayWithout = [];

for (var i = 0; i < arrayWithRefs.length; i++) {
  arrayWithout[i] = {
    safeProperty: arrayWithRefs[i].safeProperty;
    // copy whatever you want, omitting document references
  };
}

var serialized = JSON.stringify(arrayWithout);

当然,还有一些库可以帮助您挑选出您想要的属性。我会推荐underscore(通用)或cryo(正是你正在尝试的):

于 2013-01-10T00:03:54.247 回答
0

不要使用普通对象,而是使用元素的 XPath。

于 2013-01-14T20:05:50.840 回答