HarmonyOS JSON解析实体方法无法调用

@Observed
export class WaterStatus {
  code: number
  msg: string
  data: StatusData
  constructor(code: number, msg: string, data: StatusData) {
    this.code = code
    this.msg = msg
    this.data = data
  }
}

@Observed
export class StatusData {
  is_online: boolean
  battery_status?: number //第1位为有无电池;第2位为是否充电中;第3、4、5位表示电量二进制(0,1,2,3,4,5档)

  constructor(is_online: boolean, battery_status: number,) {
    this.is_online = is_online
    this.battery_status = battery_status
  }

  /**
   * 是否有电池
   */
  hasBattery(): boolean {
    if (this.battery_status == undefined) {
      return false
    }
    return (this.battery_status >> 0 & 0x0001) == 1
  }

  /**
   * 是否充电中
   */
  isCharge(): boolean {
    if (this.battery_status == undefined) {
      return false
    }
    return (this.battery_status >> 1 & 0x0001) == 1
  }
}

result={"code":200,"msg":"ok","data":{"is_online":true,"battery_status":19,"mode":5,"nodistrub":"","timezone":28800,"remind":0,"water_status":0,"change_remind":3,"duration":30,"sleep_time":60}}
let waterStatus = JSONUtil.jsonToBean(WaterStatus, result)
let data = waterStatus?.data
let hasBattery = data?.hasBattery()

对象的方法hasBattery无法调用。

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

请参考示例如下:

import 'reflect-metadata';
import { plainToClass, Type } from 'class-transformer';

export class WaterStatus {
  code: number = 0
  msg: string = ''
  @Type(() => StatusData)
  data: StatusData = new StatusData()

}

@Observed
export class StatusData {
  is_online: boolean = false
  battery_status?: number = 0 //第1位为有无电池;第2位为是否充电中;第3、4、5位表示电量二进制(0,1,2,3,4,5档)
  water_status?: number = 0 //第1、2位决定,00充足[0]、01缺水[1]、10无水[2]、11水桶异常[3]
  mode?: number = 0
  nodistrub?: string = ''
  timezone?: number = 0
  remind?: number = 0
  change_remind?: number = 0
  sleep_time?: number = 0
  duration?: number = 0


  /**
   * 是否有电池
   */
  hasBattery(): boolean {
    if (this.battery_status == undefined) {
      return false
    }
    return (this.battery_status >> 0 & 0x0001) == 1
  }

  /**
   * 是否充电中
   */
  isCharge(): boolean {
    if (this.battery_status == undefined) {
      return false
    }
    return (this.battery_status >> 1 & 0x0001) == 1
  }

  /**
   * 当前电量
   * 第3、4、5位表示电量二进制(0,1,2,3,4,5档)
   */
  curPower(): number {
    if (this.battery_status == undefined) {
      return 0
    }
    let bit2 = this.battery_status >> 2 & 0x0001
    let bit3 = this.battery_status >> 3 & 0x0001
    let bit4 = this.battery_status >> 4 & 0x0001
    return bit2 + (bit3 << 1) + (bit4 << 2)
  }

  /**
   * 第1、2位决定,00充足[0]、01缺水[1]、10无水[2]、11水桶异常[3]
   */
  waterStatus(): number {
    if (this.water_status == undefined) return 0
    let bit0 = this.water_status >> 0 & 0x0001
    let bit1 = this.water_status >> 1 & 0x0001
    return bit0 + (bit1 << 1)
  }

  /**
   * 出水模式设置 :第1、2位决定,00感应、01持续、10间接感应
   * @return 0感应、1持续、2间接感应
   */
  getWorkMode(): number {
    if (this.mode == undefined) return 0
    let bit0 = this.mode >> 0 & 0x0001
    let bit1 = this.mode >> 1 & 0x0001
    return bit0 + (bit1 << 1)
  }
}
aboutToAppear(): void {
  let json = '{"code":200,"msg":"ok","data":{"is_online":true,"battery_status":19,"mode":5,"nodistrub":"","timezone":28800,"remind":0,"water_status":0,"change_remind":3,"duration":30,"sleep_time":60}}'
  let jsonData1: ESObject = JSON.parse(json)
  let responseObj1: WaterStatus = plainToClass(WaterStatus, jsonData1);
  responseObj1.data.hasBattery()
  console.log('waterStatus===='+ responseObj1.data.waterStatus())
  console.log('getWorkMode===='+ responseObj1.data.getWorkMode())
}
分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS JSON实体
42浏览 • 1回复 待解决
HarmonyOS json 解析
16浏览 • 1回复 待解决
HarmonyOS Jsons解析的对象无法调用防范
549浏览 • 1回复 待解决
HarmonyOS json解析异常
540浏览 • 1回复 待解决
HarmonyOS JSON转换后调用对象方法报错
172浏览 • 1回复 待解决
HarmonyOS 是否有json实体类的工具
28浏览 • 1回复 待解决
能否支持json实体类的工具
1149浏览 • 1回复 待解决
HarmonyOS使用json解析报错
1376浏览 • 2回复 待解决
HarmonyOS json解析问题
492浏览 • 1回复 待解决
HarmonyOS json解析特殊字符
27浏览 • 1回复 待解决
HarmonyOS JSON解析number丢失精度
398浏览 • 1回复 待解决
HarmonyOS 怎么解析本地文件json内容?
193浏览 • 1回复 待解决
HarmonyOS 超长JSON字符串解析
19浏览 • 1回复 待解决
HarmonyOS 数据类中的方法无法调用
311浏览 • 1回复 待解决
如何解析JSON字符串?
1277浏览 • 1回复 待解决
嵌套JSON字符串解析问题
2071浏览 • 1回复 待解决
HarmonyOS 如何解析json字符串?
598浏览 • 1回复 待解决