HarmonyOS 鸿蒙Next 通过泛型封装“JSON.parse进行反序列化,再用plainToClass进行类型转换”问题

发布于 1周前 作者 bupafengyu 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 通过泛型封装“JSON.parse进行反序列化,再用plainToClass进行类型转换”问题


将 JSON.parse进行反序列化得到的对象,转换为相应真实的对象,能够调用该对象下面的的方法。
这个过程想要通过泛型封装,但是,ArkTS 不支持 “typeof T” 这样的写法?

或者怎样做,能够通过 泛型创建对象?

具体实现代码如图:泛型创建对象.jpg 
 


更多关于HarmonyOS 鸿蒙Next 通过泛型封装“JSON.parse进行反序列化,再用plainToClass进行类型转换”问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

不支持您提供的那种写法,plainToClass第一个参数只能写成一个具体的类


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 通过泛型封装“JSON.parse进行反序列化,再用plainToClass进行类型转换”问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,若要通过泛型封装实现JSON.parse进行反序列化,并使用plainToClass进行类型转换,可以遵循以下步骤:

  1. 引入依赖:确保项目中已引入必要的JSON处理库,如class-transformerclass-validator(如适用),以及鸿蒙支持的JSON处理库。

  2. 定义泛型类型:创建一个泛型方法,该方法接受一个目标类型T作为参数。

  3. JSON反序列化:使用鸿蒙提供的JSON解析功能(非Java或C语言相关),将JSON字符串转换为鸿蒙原生对象。

  4. 类型转换:利用plainToClass函数(假设鸿蒙环境支持类似功能),将上一步得到的对象转换为指定的泛型类型T

示例代码框架(注意:具体实现需根据鸿蒙API调整):

function parseAndTransform<T>(jsonString: string, targetType: { new(): T }): T {
    let jsonObject = JSON.parse(jsonString); // 鸿蒙JSON解析
    return plainToClass(targetType, jsonObject); // 假设鸿蒙支持类似转换
}

注意:上述代码为简化示例,实际使用中需考虑鸿蒙系统的具体API实现和差异。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部