HarmonyOS 鸿蒙Next 用 class-transformer的plainToInstance转换数组返回报错

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

HarmonyOS 鸿蒙Next 用 class-transformer的plainToInstance转换数组返回报错 使用 class-transformer 转换数组没问题,为什么 return 返回却报类型不一致呢?错误信息:Type 'xxx' is missing the following properties from type 'xxx[]': length, pop, push, concat, 和 28 more.

点进去查看的也是 plainToInstance 下面那个方法,而不是返回数组的上面那个方法。难道使用 plainToInstance 转换数组不能正常返回??


更多关于HarmonyOS 鸿蒙Next 用 class-transformer的plainToInstance转换数组返回报错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

class-transformer可以安装使用,

可以试下

plainToInstance(ztTradeMonitionSettingModel, JSON.parse(userJson)) as ztTradeMonitionSettingModel[];

更多关于HarmonyOS 鸿蒙Next 用 class-transformer的plainToInstance转换数组返回报错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


试过 仍报错,

试一下用这个方法转一下

return jsonToArray(ztTradeMonitionSettingModel, userJson);

function jsonToArray<T>(cls: ClassConstructor<T>, jsonStr: string): Array<T> {
  try {
    return plainToInstance(cls, JSON.parse(jsonStr), { enableImplicitConversion: false, exposeDefaultValues: true }) as Array<T>
  } catch (err) {
    let error = err as BusinessError;
    return []
  }
}

嗯 还是要包装一层,

OpenHarmony是不是把这个库删掉了?在Gitee中搜不到class-transformer,但是通过终端还能正常安装

同问,为啥删掉了啊,整的都不敢用了怕有什么隐患,

针对帖子标题中提到的HarmonyOS鸿蒙Next环境下使用class-transformer库的plainToInstance函数转换数组返回报错的问题,以下是可能的解决方案:

在HarmonyOS环境中,如果class-transformer库的plainToInstance函数在转换数组时报错,这通常与数据类型不匹配或库版本不兼容有关。请确认以下几点:

  1. 数据类型匹配:确保传递给plainToInstance的JSON数组中的对象结构与目标类的属性完全匹配。任何属性名或类型的差异都可能导致转换失败。

  2. 库版本:检查class-transformer库的版本是否与HarmonyOS Next环境兼容。如果不兼容,可能需要升级或降级库版本。

  3. 数组处理:plainToInstance函数默认用于转换单个对象,而非数组。如果需要转换数组,应使用plainToClass并指定数组类型,例如plainToClass(MyClass[], jsonArray)

  4. 错误信息:详细查看报错信息,它通常会指出问题所在,如属性缺失、类型错误等。

如果以上步骤仍未解决问题,可能是更具体的HarmonyOS环境或class-transformer库的问题。此时,建议直接联系官网客服以获取更专业的帮助。

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

回到顶部