字符串化时间戳对象

Posted

技术标签:

【中文标题】字符串化时间戳对象【英文标题】:Stringify timestamp object 【发布时间】:2012-12-24 06:57:48 【问题描述】:

我如何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...
;

【问题讨论】:

JSON.stringify() 不起作用是怎么回事? @Pointy nope,我得到Uncaught TypeError: Converting circular structure to JSON 并且,that 也无济于事...... 这意味着你有一个不可序列化的对象。如果您要发布 确切 对象的外观而没有“... etc ...”部分,那么有人可能会提供帮助。 #document&lt;a&gt; 是什么?如果它们是 DOM 节点引用,则它们不能被序列化。 @bfavaretto 是的,你是对的......有没有解决方法? 【参考方案1】:

该对象似乎包含对documenta 标记的引用。在删除此类引用之前,您将无法对其进行序列化。

一个简单的解决方案是:

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(正是您要尝试的):

underscorejs.org cryojs

【讨论】:

全面披露,我是这个库的作者:github.com/hunterloftis/cryo - 'JSON on steroids' - 它让你可以毫无问题地围绕 DOM 元素进行字符串化。使用大量单元测试替换 JSON.stringify/JSON.parse。【参考方案2】:

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

【讨论】:

以上是关于字符串化时间戳对象的主要内容,如果未能解决你的问题,请参考以下文章

处理纳秒时间戳字符串

js如何返回当天零点的时间戳?

Pandas:如何将数据框列中的“时间戳”值从对象/字符串转换为时间戳?

js 时间与时间戳的转换

js 时间与时间戳的转换

golang基础--时间戳时间字符串时间对象相互转化