鸿蒙Next开发中如何将接口返回的json数据解析到model类

在鸿蒙Next开发中,如何将接口返回的JSON数据快速解析到自定义的Model类?目前我通过Http请求获取到JSON字符串后,需要手动逐个字段赋值,感觉很繁琐。有没有更高效的方式,比如类似Gson或Fastjson的自动映射工具?如果有的话,能否提供一个具体的使用示例?

2 回复

鸿蒙Next里用@ohos.utilJSON.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对象。

回到顶部