JSON.stringify更改属性

时间:2015-07-05 04:33:24

标签: javascript json fabricjs

https://jsfiddle.net/6CDFr/229/

function testing() {
  foo = canvas.getObjects();
  bar = JSON.stringify(canvas.getObjects());
  console.log(foo);
  console.log(bar);
}

JSON.stringify()正在改变" x1"," y1"," x2"和" y2"属性,如上面的JSFiddle链接中所详述,我不确定原因。

1 个答案:

答案 0 :(得分:0)

来自JSON.stringify(https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#toJSON_behavior

的(Mozilla)文档
  

toJSON()行为

     

如果要进行字符串化的对象具有名为toJSON的属性,其值为   是一个函数,然后toJSON()方法自定义JSON   字符串化行为:而不是被序列化的对象,   调用时,toJSON()方法返回的值将被序列化。   例如:

如果您使用以下内容,则应获得类似的值

function testing() {
    foo = canvas.getObjects()[0];
    bar = JSON.stringify(canvas.getObjects()[0]);
    console.log(foo.toJSON());
    console.log(bar);
}

或者如果你将toJSON属性设置为undefined(但我非常确定会对fabric.js造成严重破坏,除非你在对象的副本上执行它 - 我已经#ve;直接在下面的对象上完成)

function testing() {
    foo = canvas.getObjects();
    bar = JSON.stringify(canvas.getObjects().map(function (o) {
        o.toJSON = undefined;
        return o
    }));
    console.log(foo);
    console.log(bar);
}