javascript - 使用 JSON 序列化图论树的解决方法?

标签 javascript json

我有一个节点数组。 每个节点都有一个子节点数组和一个指向其父节点的指针。 我想使用 JSON.stringify 序列化它,但使用父指针显然会导致循环引用,并且 JSON 会引发异常。我可以做些什么来解决循环引用并使用 JSON 进行序列化?

相关问题:Chrome sendrequest error: TypeError: Converting circular structure to JSON

最佳答案

您应该在具有父级的对象中创建自定义的 toJson 函数。

来自documentation

If an object being stringified has a property named toJSON whose value is a function, then the toJSON method customizes JSON stringification behavior

var x = {
  foo: 'foo',
  toJSON: function () {
    return 'bar';
  }
};
var json = JSON.stringify({x: x});

那么您可以在具有父引用的对象中创建该函数,也许像这样?

MyObj = function(){
    this.xxx = 'foobar';
    this.zzz = 'foooobar';
    this.name = 'foo';
    this.parent = ...;
    toJSON = function(){
        tmp = '{'
        for(prop in MyObj){
            if(prop == 'parent'){
                tmp += 'parent: "'+ this['parent'].name +'"'; //maybe?? optional!
            }else{
                tmp += prop + ':' + this[prop].stringify + ','; //you will still use the browser function
            }
            tmp += '}            
        }
        return tmp;
    }
}

关于javascript - 使用 JSON 序列化图论树的解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12151118/

相关文章:

javascript - JQuery 在使用 PHP 的 json_encode 时给出 JSON 语法错误

javascript - jQuery .empty() 与 iframe,其 src 是 Internet Explorer 中的 pdf 中断插件

javascript - 追加元素后刷新 DOM

javascript - 面包屑路由器动态

sql - PostgreSQL json路径表达式以查找具有特定键的第一个数组元素

json - 来自导入文件而非数据库的 Google map 坐标

Javascript使函数一个接一个地执行

javascript - setTimeout 的最小毫秒值是多少?

html - 适用于结构化数据的文本友好文件格式

ios - json数据到服务器