将JSON.stringify与TypeScript getter / setter结合使用

前端之家收集整理的这篇文章主要介绍了将JSON.stringify与TypeScript getter / setter结合使用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在TypeScript中使用getter / setter访问器.由于变量和方法不可能具有相同的名称,因此我开始使用较低的短划线为变量添加前缀,如许多示例中所示:
  1. private _major: number;
  2.  
  3. get major(): number {
  4. return this._major;
  5. }
  6. set major(major: number) {
  7. this._major = major;
  8. }

现在,当我使用JSON.stringify()方法将对象转换为JSON字符串时,它将使用变量名作为键:_major.

由于我不希望JSON文件的所有键都以下划线作为前缀,因此有可能使TypeScript使用getter方法名称(如果可用)吗?或者有没有其他方法来使用getter / setter方法,但仍然产生干净的JSON输出

我知道有些方法可以在将JSON密钥写入字符串输出之前手动修改它们.如果有更简单的解决方案,我很好奇.

Here is a JSFiddle,它演示了当前的行为.

不,您不能使用getter / setter名称而不是属性名称来使用JSON.stringify.

但你可以这样做:

  1. class Version {
  2. private _major: number;
  3.  
  4. get major(): number {
  5. return this._major;
  6. }
  7.  
  8. set major(major: number) {
  9. this._major = major;
  10. }
  11.  
  12. toJsonString(): string {
  13. let json = JSON.stringify(this);
  14. Object.keys(this).filter(key => key[0] === "_").forEach(key => {
  15. json = json.replace(key,key.substring(1));
  16. });
  17.  
  18. return json;
  19. }
  20. }
  21.  
  22. let version = new Version();
  23. version.major = 2;
  24. console.log(version.toJsonString()); // {"major":2}

猜你在找的Json相关文章