一尘不染

将带有符号的ES6类转换为JSON

json

我在Aurelia应用程序中使用硬编码的类来表示模型。这是一个模型“ PostEdit”:

var _postID = Symbol();
var _title = Symbol();
var _text = Symbol();

export class PostEdit {

    constructor(postEdit) {
        this[_postID] = postEdit.postID;
        this.title = postEdit.title;
        this.text= postEdit.text;
    }

    get postID() { return this[_postID]; }

    get title() { return this[_title]; }
    set title(val) { this[_title] = val; }

    get text() { return this[_text]; }
    set text(val) { this[_text] = val; }

}

该对象被操纵后,我需要PUTPOST它回服务器。但看起来AureliaHttpClient正在发送一个空JSON字符串({})。研究一下,Symbols将ES6类转换为时似乎被忽略了JSON

如何将我所有的属性都放入一个JSON字符串中以提交回服务器?


阅读 264

收藏
2020-07-27

共1个答案

一尘不染

我假设您正在使用符号来使数据保持私有,但这意味着如果要将数据包含在JSON表示中,则必须经过一些额外的步骤。

这是一个toJSON在模型上使用以显式导出您关心的属性的示例

export class PostEdit {

  // ...
  toJSON() {
    return {
      postID: this.postID,
      title:  this.title,
      text:   this.text
    };
  }
}

要么

export class PostEdit {

  // ...
  toJSON() {
    let {postID, title, text} = this;
    return {postID, title, text};
  }
}

JSON.stringify被调用您的实例,它会自动调用toJSON

2020-07-27