JSON.stringfy 的过滤问题

现在有一个对象

var o = {
    a: {
       x: {
          y:1
       }
    },
    b: 'second',
    c: 3

}

JSON.stringfy的第二个参数可以过滤一些属性

JSON.stringify(o,['b'])

输出 "{"b":"second"}"

JSON.stringify(o,['a'])

输出 "{"a":{}}"

把a属性指向的对象都转化为一个空对象了

如果希望只把a属性转化为json数据 现在的方法是

JSON.stringify(o.a)

输出 "{"x":{"y":1}}"
但这样会丢失 a这个属性标识
我希望转化为下面这个形式

"{"a":{"x":{"y":1}}}"

除了字符拼接外有没有简单的方法可以实现,其中a属性指向的对象可能嵌套不止x,y两个属性,而且和a属性同级属性除了b,c外可能还有其他属性

阅读 2.8k
2 个回答
var t = {a:o.a};
JSON.stringify(t);

第二个参数可以传一个函数:

var o = {
    a: {
       x: {
          y:1
       }
    },
    b: 'second',
    c: 3

}

JSON.stringify(o,function(key,value){
    if(key=='b'||key=='c'){return undefined}
    return value;

})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题