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

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

class A {
  public a: string = "a";
  public b: string = "b";
}

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

HarmonyOS
10h前
浏览
收藏 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
分享
微博
QQ
微信
回复
7h前
相关问题
HarmonyOS 怎么给类的属性赋默认值
827浏览 • 1回复 待解决
HarmonyOS 类中属性默认值问题
262浏览 • 1回复 待解决
class使用闭包方式初始化 默认值丢失
1920浏览 • 1回复 待解决
@Prop 为什么不能提供默认值啊?
2095浏览 • 1回复 待解决
HarmonyOS 页面反向怎么
118浏览 • 1回复 待解决
HarmonyOS使用json解析报错
1347浏览 • 2回复 待解决
HarmonyOS 怎么解析本地文件json内容?
176浏览 • 1回复 待解决
HarmonyOS json解析异常
530浏览 • 1回复 待解决
OpenHarmony 使用WEB组件问题
3510浏览 • 1回复 待解决