我在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; } }
该对象被操纵后,我需要PUT和POST它回服务器。但看起来Aurelia的HttpClient正在发送一个空JSON字符串({})。研究一下,Symbols将ES6类转换为时似乎被忽略了JSON。
PUT
POST
Aurelia
HttpClient
JSON
{}
Symbols
如何将我所有的属性都放入一个JSON字符串中以提交回服务器?
我假设您正在使用符号来使数据保持私有,但这意味着如果要将数据包含在JSON表示中,则必须经过一些额外的步骤。
这是一个toJSON在模型上使用以显式导出您关心的属性的示例
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
JSON.stringify