假设我有一个对象:
const a = {
foo: 123,
bar: 'example'
}
该对象是许多其他对象的一部分,即
const b = {
a: a,
anotherField: "example"
}
实际上,我使用的是TypeScript,所有这些对象都属于同一类,我认为这并不重要。
将b
对象序列化为JSON之后,我需要获取此字符串(即,我只是从foo
获得a
字段):
{ a: 123, anotherField: "example" }
告诉JSON.stringify()
如何将a
对象转换为字符串的最简单,最优雅的方法是什么?
可能类似于Python
所允许的内容。
答案 0 :(得分:3)
您可以在字符串化时使用替换器:
const result = JSON.stringify(b, (k, v) => v && v.stringify() || v);
这样,您可以轻松地向a
添加自定义字符串:
const a = {
foo: 123,
bar: 'example',
stringify() { return this.foo; }
}
答案 1 :(得分:1)
您可以在toJSON
中定义a
。
如果要被字符串化的对象具有名为toJSON的属性,其值是一个函数,那么toJSON()方法将自定义JSON字符串化行为:代替被序列化的对象,由toJSON()方法返回的值将被调用,而不是被序列化的对象。序列化。
(来源:MDN)
例如:
class A {
constructor(foo, bar) {
this.foo = foo;
this.bar = bar;
}
toJSON() {
return this.foo;
}
}
const a = new A(123, "some name");
const b = {
a: a,
anotherField: "example"
};
console.log(JSON.stringify(b)); // "{"a":123,"anotherField":"example"}"