json对象能否引用自身内容作为变量

{
   "id":1,
   "name":aaa,
   "type":id
}

如上,type的值希望是id的值,但实际这样的写法肯定是行不通的,只是不清楚这个思路能否实现

阅读 5.2k
3 个回答

js对象可以,用Object.defineProperty/直接定义getter,已序列化的json做不到

const foo = {
   id:1,
   name:'aaa',
   get type(){ return this.id }
}
console.log(foo.type);
foo.id=2;
console.log(foo.type);

可以在 JSON 的基础上,扩展实现自己的parsestringify 方法。
但其实挺麻烦的,比如转字符串的时候,多处引用的引用类型节点需要合并引用,需要判断所有引用类型的子项有没有被多处引用,每次比对的复杂度都是 O(n),暂时想不出有什么高招可以优化。
而且也不会有什么实际用处,还是放弃大法好。

是不是这样?

var json = '{"id":1,"name":"aaa","type":""}';
var obj = JSON.parse(json);
var jsons = {"id":1,"name":"aaa","type":obj.id};
console.log(JSON.stringify(jsons));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题