我正在尝试寻找一种使用 JSON 和 ES6 类交换数据的方法。
假设我有以下 ES6 类定义:
export default class Point {
constructor(data = {}) {
Object.assign(this, data);
}
get x() { return this._x; }
set x(val) { this._x = val; }
get y() { return this._y; }
set y(val) { this._y = val; }
}
以及以下对象实例:
let jsonIn = JSON.parse("{"x": "34", "y": "28"}");
let myPoint = new Point(jsonIn);
经过检查,myPoint
将正确地将名为 _x
和 _y
的两个“内部”属性分别设置为 34 和 28。因此,从 JSON 到 ES6 类实例的对象水合作用是可能的。
但是,如果我现在尝试将此实例序列化回 JSON:
let myJson = JSON.stringify(myPoint);
我得到以下信息:
> "{"_x":"34","_y":"28"}"
将序列化的 JSON key 命名为对象的公共(public)属性 getter 名称是否可能或合法?是这样的吗?
> "{"x": "34", "y": "28"}"
谢谢!
最佳答案
这在 ES2015 中没有改变。您仍然简单地定义一个自定义 toJSON
方法:
toJSON() {
return {x: this.x, y: this.y};
}
关于javascript - 使用 ES6 类和 JSON 交换数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33600514/