HarmonyOS 使用axios网络请求数据类型不一致

我在网络请求时定义的数据类型与后台不一致时,不能自动转成本地定义的类型

export interface User{
  id:string //1,本地定义成string,而后台实际是number
  name:string
}
main(){
  axios.get().then((user:User)=>{
    console.log(user.id.length)//2,执行时报错,因为实际类型是number没有length属性
  })
}

以上代码在执行到注释2时会报错

问题:网络请求从接口获取的后台数据与本地定义的数据类型当字段不一致时,有什么好办法能够使数据自动转变成本地定义的类型

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

可以使用class-transformer和reflect-metadata这两个工具来实现。

以下是具体步骤:

1.安装依赖:使用ohpm install安装class-transformer和reflect-metadata。

2.配置JSON数据:将JSON数据定义为一个类的属性。 例如:

json { "name": "John", "age": 30, "isMale": true }

3.使用@Type注释指定嵌套类型:在类定义中,使用@Type注释来指定嵌套类型。 例如:

typescript class Person {
  @Type(() => String) name: string;
  @Type(() => Number) age: number;
  @Type(() => Boolean) isMale: boolean;
}

typescript class Person {
  @Type(() => String) name: string;
  @Type(() => Number) age: number;
  @Type(() => Boolean) isMale: boolean;
} 

4.使用plainToClass方法转换JSON字符串:使用class-transformer中的plainToClass方法将JSON字符串转换为对象。 例如:

typescript import {plainToClass} from'class-transformer';
const person = plainToClass(Person, JSON.parse(jsonString)); 

通过以上步骤,可以将JSON字符串中的部分内容转换为对象,并确保只转换所需的部分。

参考文档:

https://github.com/typestack/class-transformer

分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS 单位不一致问题
76浏览 • 1回复 待解决
签名不一致报错怎么回事?
2731浏览 • 1回复 待解决
water flow 出现gap不一致问题
740浏览 • 1回复 待解决
依赖hsp出包,报错versionname不一致
109浏览 • 1回复 待解决
启动和调试的行为不一致
249浏览 • 1回复 待解决
napi里面,相同输入输出不一致
1694浏览 • 1回复 待解决
window 全屏操作不同设备表现不一致
410浏览 • 1回复 待解决
Path组件绘制的线条粗细不一致
1934浏览 • 1回复 待解决
文字空行高度与字体高度不一致
2130浏览 • 1回复 待解决