【问题标题】:Where exactly did circular reference start when JSON.stringify throws the error?当 JSON.stringify 抛出错误时,循环引用到底从哪里开始?
【发布时间】:2014-06-01 22:40:55
【问题描述】:

将对象传递给JSON.stringify 会引发错误“将循环结构转换为 JSON”,但我不确定原因。

我通过服务器端 node.js 传递对象

app.get('/', function(req,res){
    res.render('index.jade', {object: object});
});

对玉

script var table = !{JSON.stringify(object)};

当 Jade 尝试解析 object 时,它会抛出错误。

但我没有理由相信 object 有循环引用。事实上我做了一个

console.info(JSON.stringify(req.user.table.export))

就在res.render 之前,它工作正常!

有没有办法准确知道循环引用是从哪里产生的?

编辑 found something,但不幸的是can't use it in Jade

edit2 actually can

【问题讨论】:

    标签: javascript json node.js pug circular-reference


    【解决方案1】:

    在翡翠中

    - var cache = [];
    script var table = !{JSON.stringify(table,function(key, value) {if (typeof value === 'object' && value !== null) {if (cache.indexOf(value) !== -1) {console.log('Found Circular reference: '+key);return;}cache.push(value);}return value;})};
    - cache = null;
    

    输出

    {"玩家":[{"id":"53179fd401d540b8c5000001","用户名":...
    找到循环参考:表
    不推荐使用连接属性。使用 getConnections() m
    找到循环参考:所有者
    找到循环参考:
    找到循环参考:sockets
    找到循环参考:store
    找到循环参考:经理
    找到循环参考:经理
    找到循环参考:mime
    找到循环参考:mime
    找到循环参考:mime
    找到循环参考:mime
    找到循环参考:用户
    找到循环参考:用户
    找到循环参考:_idleNext
    找到循环参考:_idlePrev
    找到循环参考:_idleNext
    找到循环参考:j1sYyxSoI8LEw5DNYGUa
    找到循环参考:经理
    找到循环参考:store
    找到循环引用:表

    source

    不知道为什么会这样……(link to issue on /Jade github)

    【讨论】:

    • 如果你想在解析JSON的时候恢复循环引用试试this
    猜你喜欢
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    • 2023-04-11
    • 1970-01-01
    • 2014-12-25
    • 2013-04-03
    相关资源
    最近更新 更多