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())
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.

上述代码直接调用 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())
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
分享
微博
QQ
微信
回复
2024-12-27 17:09:42
相关问题
json 如何转换成自定义业务类对象
1596浏览 • 1回复 待解决
json解析对象获取数据返回undefined。
1780浏览 • 1回复 待解决
HarmonyOS json解析问题
1170浏览 • 1回复 待解决
HarmonyOS JSON转换调用对象方法报错
897浏览 • 1回复 待解决
json如何在ArkTS解析到Array对象
1006浏览 • 2回复 待解决
ArkTS如何自定义数组对象排序规则
1153浏览 • 1回复 待解决
HarmonyOS 自定义弹窗问题
1628浏览 • 1回复 待解决
IDE无法识别在自定义方法检测
2273浏览 • 1回复 待解决
HarmonyOS 全局设置自定义字体方法
788浏览 • 1回复 待解决
自定义路由表实现方法
1000浏览 • 1回复 待解决
自定义装饰器使用问题
1486浏览 • 1回复 待解决
自定义参数BuildProfile问题汇总
2808浏览 • 1回复 待解决