HarmonyOS 鸿蒙Next 如何让一个对象转换为类的真实实例

HarmonyOS 鸿蒙Next 如何让一个对象转换为类的真实实例 如何让一个对象转换为类的真实实例

3 回复

使用第三方库plainToClass,具体可参考

https://gitee.com/openharmony-tpc/openharmony_tpc_samples/tree/master/class-transformer

import { plainToClass } from "class-transformer";

interface UserJson {
  id: number,
  firstName: string,
  lastName: string,
  age: number
}

const userJson:UserJson = {
  id: 1,
  firstName: "Johny",
  lastName: "Cage",
  age: 27
}

class User {
 id:number;
 firstName:string;
 lastName:string;
 age:number;

 constructor() {
   this.id = 0;
   this.firstName = "";
   this.lastName = "";
   this.age = 0;
 }

 getName() {
   return this.firstName + ' ' + this.lastName;
 }

 isAdult() {
   return this.age > 36 && this.age < 60;
 }
}

const user:User = plainToClass(User,userJson);

log(user.getName());

更多关于HarmonyOS 鸿蒙Next 如何让一个对象转换为类的真实实例的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


可以考虑以下两种方法进行转换:

1、使用as作类型断言,假设当成存在变量obj,已有类Person

let objStr = JSON.stringify(obj);
let finalObj = JSON.parse(objStr) as Person
console.log(finalObj instanceof person) // 验证是否已转为Person实例

ps:使用类型断言时要确保对象的实际类型与断言的类型一致,否则会在运行时出现错误。

2、使用三方库class-transformerhttps://gitee.com/openharmony-tpc/openharmony_tpc_samples/tree/master/class-transformer

该库提供对象和类之间基于修饰符的转换、序列化和反序列化的能力。

在HarmonyOS(鸿蒙)开发中,将一个对象转换为类的真实实例通常涉及反序列化或类型转换。鸿蒙系统本身并不提供特定的API直接用于这种转换,但可以通过以下几种方式实现:

  1. 使用JSON反序列化:如果对象是以JSON格式存储或传输的,可以使用鸿蒙提供的JSON库(如ohos.json)将其反序列化为相应的类实例。这需要类定义与JSON结构相匹配,并可能需要自定义反序列化逻辑。

  2. 工厂模式或构造函数:如果对象是通过某种协议或自定义格式存储的,可以定义一个工厂类或构造函数,根据输入数据创建类的实例。这种方式需要手动编写转换逻辑。

  3. 类型转换:如果对象已经是某种形式的引用或代理,并且你知道其真实类型,可以使用鸿蒙的类型转换机制(如C#中的as关键字或is和强制转换)将其转换为真实类型。但注意,这种转换在类型不匹配时会失败或抛出异常。

  4. 使用依赖注入框架:如果项目中使用了依赖注入框架(如Hilt、Dagger等,尽管这些框架可能不是鸿蒙原生支持的,但可以通过某种方式集成),可以利用框架的功能来管理和转换对象实例。

请注意,具体实现方式取决于你的项目需求和对象存储/传输的格式。如果问题依旧没法解决请联系官网客服, 官网地址是 https://www.itying.com/category-93-b0.html

回到顶部