HarmonyOS 鸿蒙Next Json 解析后的对象中的自定义方法问题

发布于 1周前 作者 eggper 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 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 鸿蒙Next Json 解析后的对象中的自定义方法问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在JavaScript中,可以使用JSON.parse()函数将包含有效JSON格式字符串的变量或文本转换为相应的JavaScript对象。然而,由于JSON只能表示静态属性值,无法直接表示动态方法,所以调用testBean.getNewName 会出错。

参考demo:


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()) }

更多关于HarmonyOS 鸿蒙Next Json 解析后的对象中的自定义方法问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,当你解析JSON数据到对象后,如果希望在对象中调用自定义方法,通常涉及以下几个步骤:

  1. JSON解析:使用鸿蒙提供的JSON解析API(如JsonUtil),将JSON字符串转换为对象。确保对象类与JSON结构匹配,包含相应的属性和构造函数。

  2. 自定义方法定义:在目标类中定义自定义方法。这些方法可以是普通的类方法,用于执行特定逻辑。

  3. 方法调用:解析后的对象实例上可以直接调用已定义的自定义方法。例如,如果解析得到一个User对象,而User类中有一个greet方法,那么可以直接调用userInstance.greet()

  4. 注意权限与可见性:确保自定义方法的权限和可见性(如public)允许在解析后的对象上调用。

  5. 错误处理:在JSON解析和对象方法调用过程中,进行必要的错误处理,如捕获异常,以应对可能的JSON格式错误或方法调用错误。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。在联系客服时,请提供详细的错误描述、代码示例及已尝试的解决步骤,以便客服快速定位并解决问题。

回到顶部