鸿蒙Next序列化serialized name如何使用
在鸿蒙Next开发中,如何使用@SerializedName注解来指定JSON字段的序列化名称?比如我有一个Java类属性名为userName,但JSON数据中对应的字段是user_name,该如何通过注解实现映射?能否提供一个具体的代码示例?
2 回复
鸿蒙Next中序列化字段名可通过@SerializedName注解修改JSON映射。具体用法:
- 基本用法:
public class User {
@SerializedName("user_name") // JSON字段映射为user_name
private String userName;
}
- 多字段名支持(兼容不同API版本):
@SerializedName(value = "current_name", alternate = {"old_name", "nick_name"})
private String name; // 优先取current_name,不存在时依次尝试alternate字段
- 配合JsonReader/JsonWriter使用:
// 序列化时自动使用注解名称
String json = JsonUtils.toJson(user);
// 反序列化时自动匹配注解字段
User user = JsonUtils.fromJson(json, User.class);
注意:需确保已引入鸿蒙序列化依赖,注解仅影响JSON字段名,不影响Java字段本身。
更多关于鸿蒙Next序列化serialized name如何使用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在鸿蒙Next(HarmonyOS NEXT)中,序列化时自定义字段名称可以通过 @SerializedName 注解实现,类似于其他框架(如Gson)。以下是具体使用方法:
1. 添加依赖
确保在 build-profile.json 的 dependencies 中引入序列化库(如 @ohos/serialization 或相关JSON库):
"dependencies": {
"@ohos/serialization": "1.0.0"
}
2. 使用 @SerializedName 注解
在数据类的字段上添加注解,指定序列化时的名称:
import { SerializedName } from '@ohos/serialization';
class User {
@SerializedName('user_name')
userName: string;
@SerializedName('age')
userAge: number;
constructor(name: string, age: number) {
this.userName = name;
this.userAge = age;
}
}
3. 序列化与反序列化示例
import { Serialization } from '@ohos/serialization';
// 序列化对象到JSON字符串
const user = new User('张三', 25);
const jsonString = Serialization.serialize(user);
console.log(jsonString); // 输出: {"user_name":"张三","age":25}
// 反序列化JSON字符串到对象
const jsonObj = '{"user_name":"李四","age":30}';
const newUser = Serialization.deserialize(jsonObj, User);
console.log(newUser.userName); // 输出: 李四
注意事项:
- 确保注解库支持
@SerializedName,具体名称可能因鸿蒙版本略有差异。 - 序列化/反序列化时,字段会按注解的名称映射(如
userName对应user_name)。 - 若未使用注解,默认直接使用字段名。
通过这种方式,可以灵活处理JSON键名与代码字段名不一致的情况。

