javascript - 使用 ES6 类和 JSON 交换数据

标签 javascript json oop ecmascript-6

我正在尝试寻找一种使用 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/

相关文章:

iOS Swift 给出错误 : Garbage at end when serializing data from json

json - 在 map[string]interface{} 的值上键入 switch 到 []map[string]interface{}

Java - 将通用类的实例转换为专用类的实例

javascript - JavaScript 中的 new 运算符如何工作?

javascript - 使用 JS 和 JSON 创建记录时未正确使用所有者值

javascript - 父子关系指令之间的绑定(bind)

javascript - Iframe 内容不显示在 IE 上

javascript - 单击模式外部时显示确认弹出窗口 - bootstrap

Facebook 图形 API。从相册中获取照片

c# - 强制方法从基类调用基方法