鸿蒙Next开发中如何将接口返回的json数据解析到model类
在鸿蒙Next开发中,如何将接口返回的JSON数据快速解析到自定义的Model类?目前我通过Http请求获取到JSON字符串后,需要手动逐个字段赋值,感觉很繁琐。有没有更高效的方式,比如类似Gson或Fastjson的自动映射工具?如果有的话,能否提供一个具体的使用示例?
2 回复
鸿蒙Next里用@ohos.util的JSON.parse()把接口返回的JSON字符串转成对象,然后手动赋值给model类的属性。或者用第三方库如@ohos/data的序列化功能自动映射。简单说:解析JSON → 塞进model,搞定!
更多关于鸿蒙Next开发中如何将接口返回的json数据解析到model类的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在鸿蒙Next(HarmonyOS NEXT)开发中,可以使用ArkTS的序列化功能将JSON数据解析到Model类。以下是详细步骤:
1. 定义Model类
使用@Serializable装饰器标记类,确保属性与JSON键名匹配:
@Serializable
class User {
name: string = '';
age: number = 0;
email?: string; // 可选字段
}
2. 使用JSON.parse()解析
调用JSON.parse()时传入类型信息:
let jsonString: string = '{"name": "张三", "age": 25}';
let user: User = JSON.parse(jsonString, User);
3. 处理嵌套对象
若JSON包含嵌套对象,需正确定义嵌套Model:
@Serializable
class Address {
city: string = '';
street: string = '';
}
@Serializable
class User {
name: string = '';
address: Address = new Address();
}
4. 处理数组
解析JSON数组时,使用Array<Model>类型:
let usersJson: string = '[{"name": "李四"}, {"name": "王五"}]';
let users: Array<User> = JSON.parse(usersJson, Array(User));
5. 字段映射(如键名不一致)
使用@SerializedName装饰器指定JSON字段名:
import { SerializedName } from '@ohos/base';
@Serializable
class User {
@SerializedName('full_name')
name: string = '';
}
完整示例
// 定义Model
@Serializable
class User {
@SerializedName('user_id')
id: number = 0;
name: string = '';
}
// 解析JSON
let response: string = '{"user_id": 101, "name": "小明"}';
let user: User = JSON.parse(response, User);
console.log(user.id); // 输出:101
注意事项
- 确保
@ohos.base模块已导入(API 12+默认支持) - 字段类型需与JSON数据类型匹配
- 可选字段使用
?修饰符 - 遇到复杂结构时建议逐步调试解析结果
通过这种方式,可以高效安全地将接口返回的JSON数据转换为类型化的Model对象。

