HarmonyOS JSON解析时怎么让未传字段使用默认值

使用JSON.parse将json字符串"{a=‘test’}"解析成如下对象:

class A {
  public a: string = "a";
  public b: string = "b";
}
  • 1.
  • 2.
  • 3.
  • 4.

期望是得到的对象里的b是"b",实际上是undefined,有没有方法能得到期望的结果?

HarmonyOS
2024-12-23 14:38:36
1067浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
aquaa

JSON.parse将json字符串"{a='test'}"解析成的是一个Object,如果通过as转化为A类型,这样并不会改变变量的实际类型。类型转换仅仅是告诉编译器或运行时系统,将某个值视为特定类型来处理,但并不会改变这个值的内部表示或实际类型。也就是说得到的对象实际上并没有b属性,所以得到的是undefined。

如果想要实现让未传字段使用默认值,参考示例:

import { JSON } from '@kit.ArkTS';

class A {
  public a: string = "a"; // 默认值
  public b: string = "b"; // 默认值

  constructor(data: ESObject) {
    this.a = data.a || this.a;
    this.b = data.b || this.b;
  }
}

const jsonString = '{"a": "test"}';
const jsonObject = JSON.parse(jsonString);
const instanceA = new A(jsonObject);
console.log('b = ' + instanceA.b); //输出b = b
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
分享
微博
QQ
微信
回复
2024-12-23 17:56:10


相关问题
HarmonyOS 怎么给类的属性赋默认值
2262浏览 • 1回复 待解决
HarmonyOS 类中属性默认值问题
1116浏览 • 1回复 待解决
@Prop 为什么不能提供默认值啊?
2821浏览 • 1回复 待解决
HarmonyOS ArkTS select组件如何设置默认值
1084浏览 • 1回复 待解决
class使用闭包方式初始化 默认值丢失
2726浏览 • 1回复 待解决
HarmonyOS 页面反向怎么
878浏览 • 1回复 待解决
HarmonyOS使用json解析报错
2787浏览 • 2回复 待解决
HarmonyOS 怎么解析本地文件json内容?
931浏览 • 1回复 待解决