【发布时间】:2016-01-27 17:56:37
【问题描述】:
我有硬编码的类来表示我的 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 字符串({})。调查一下,在将 ES6 类转换为 JSON 时,似乎忽略了 Symbols。
如何将我的所有属性放入JSON 字符串以提交回服务器?
【问题讨论】:
-
您希望它们在 JSON 表示中看起来像什么? JSON 对象属性看起来像
"name": "value",但是应该为Symbol使用什么名称? -
查看 www.json.org 了解可以用 JSON 表示的值的类型。您可能需要在您的类中提供
toJSON方法以返回所需的表示形式。 -
@Barmar 最后我需要
{ "postID": "1" ...}。我想我希望有一些内置的方法来做到这一点 -
为什么需要getter和setter?除了使用普通属性时,它们不会做任何事情。
-
@Jonesopolis:绝对是矫枉过正。如果您在 getter/setter 主体中添加验证或解析或其他任何内容,则可以使用它们,但如果您只是分配/访问“更私有”的属性,它几乎没有用处。顺便说一句,符号不是私有的,它们只是被隐藏在正常循环或
JSON.stringify之类的东西中被枚举。任何想要访问的人仍然可以访问它们。
标签: javascript json ecmascript-6 aurelia