Json 解析后的对象中的自定义方法问题

class test {
  name: string

  constructor(name: string) {
    this.name = name
  }

  getNewName() {
    return this.name + '==='
  }
}
testFun() {
  let str = '{"name":"zhang san"}'
  let testBean:test = JSON.parse(str)
  console.log(testBean.name)
  console.log(testBean.getNewName())
}

上述代码直接调用 testBean.name 是没有问题的,但是调用 testBean.getNewName 会出错,不知道是什么原因。如果是语言设计方面就是如此,那么有没有什么好的解决方案呢,比如我从接口解析直接生成了对象数据类,但是对象里面的数据对象都需要包装才能使用,除了新建工具类传递值过去,或者新建对象一个个赋值过去,还有其他的解决办法吗

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
fox280

在JavaScript中,可以使用JSON.parse()函数将包含有效JSON格式字符串的变量或文本转换为相应的JavaScript对象。然而,由于JSON只能表示静态属性值,无法直接表示动态方法,所以调用testBean.getNewName 会出错。根据提供的场景,建议通过类的构造函数来生成对象:

class test {
  name: string

  constructor(name: string) {
    this.name = name
  }

  getNewName() {
    return this.name + '==='
  }
}

function testFun() {
  let str = '{"name":"zhang san"}'
  let testBean: test = new test(JSON.parse(str)?.name)
  console.log(testBean.name)
  console.log(testBean.getNewName())
}
分享
微博
QQ
微信
回复
1天前
相关问题
json 如何转换成自定义业务类对象
819浏览 • 1回复 待解决
HarmonyOS json解析问题
545浏览 • 1回复 待解决
HarmonyOS JSON转换调用对象方法报错
181浏览 • 1回复 待解决
IDE无法识别在自定义方法检测
1824浏览 • 1回复 待解决
HarmonyOS 自定义弹窗问题
742浏览 • 1回复 待解决
自定义路由表实现方法
479浏览 • 1回复 待解决
HarmonyOS 全局设置自定义字体方法
54浏览 • 1回复 待解决
自定义参数BuildProfile问题汇总
1762浏览 • 1回复 待解决
自定义装饰器使用问题
845浏览 • 1回复 待解决
HarmonyOS JSON数据解析问题
31浏览 • 1回复 待解决