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

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

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

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

阅读 489
1 个回答

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
logo
HarmonyOS
子站问答
访问
宣传栏