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
2024-12-27 15:58:22
浏览
收藏 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
微信
回复
2024-12-27 17:09:42
相关问题
json 如何转换成自定义业务类对象
1177浏览 • 1回复 待解决
json解析对象获取数据返回undefined。
1275浏览 • 1回复 待解决
HarmonyOS json解析问题
824浏览 • 1回复 待解决
HarmonyOS JSON转换调用对象方法报错
508浏览 • 1回复 待解决
json如何在ArkTS解析到Array对象
561浏览 • 2回复 待解决
ArkTS如何自定义数组对象排序规则
447浏览 • 1回复 待解决
IDE无法识别在自定义方法检测
1960浏览 • 1回复 待解决
HarmonyOS 自定义弹窗问题
1180浏览 • 1回复 待解决
自定义路由表实现方法
647浏览 • 1回复 待解决
HarmonyOS 全局设置自定义字体方法
284浏览 • 1回复 待解决
自定义装饰器使用问题
1082浏览 • 1回复 待解决
自定义参数BuildProfile问题汇总
2132浏览 • 1回复 待解决