HarmonyOS 鸿蒙Next json 解析 给字段添加别名 类似Gson 的@SerializedName 注解

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

HarmonyOS 鸿蒙Next json 解析 给字段添加别名 类似Gson 的@SerializedName 注解

是否有类似Gson 的@SerializedName 注解 给解析字段添加别名

2 回复
鸿蒙应用开发中,推荐使用class-transformer三方框架 参考文档:https://gitee.com/openharmony-tpc/openharmony_tpc_samples/tree/master/class-transformer

1,当前JSON相关推荐使用class-transformer三方库;

2,如果想用不同的名字公开一些属性, 可以通过为[@Expose](/user/Expose)装饰器指定一个name选项来实现;

demo:

1,定义对象:

深色代码主题
复制
export class Employee {

id:number = 0;

name: string|undefined = undefined;

@Expose({name:“department”})

dept: string|undefined = undefined

}

2,引入 class-transformer

深色代码主题
复制
import { classToPlain, instanceToPlain, plainToClass } from ‘class-transformer’;

3,对象转JSON:

深色代码主题
复制
let employee: Employee = new Employee();

employee.id = 1001;

employee.name = “张三”;

employee.dept = “云服务”

obj2Json(employee: Employee) {

let jsonStr = JSON.stringify(instanceToPlain(employee));

console.info("Employee jsonStr = " + jsonStr)

return jsonStr;

}

4,JSON转对象:

深色代码主题
复制
let param= ‘{“id”:1,“name”:“张三”,“department”:“云服务”}’

Json2Obj(param: string) {

let employee: Employee = plainToClass(Employee, JSON.parse(param)) as Employee;

console.info("Employee dept = " + employee.dept);

return employee;

}

安装class-transformer:

深色代码主题
复制
ohpm install class-transformer

该库存在性能问题,库地址暂时隐藏,仍然可以使用这个库,目前只是OS侧在研究怎么优化性能,仍然可以使用(ohpm install)

更多关于HarmonyOS 鸿蒙Next json 解析 给字段添加别名 类似Gson 的@SerializedName 注解的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,如果你需要在JSON解析时为字段添加别名,类似于在Android开发中Gson库的@SerializedName注解,你可以使用鸿蒙提供的JSON序列化和反序列化工具类,并结合注解来实现这一功能。

鸿蒙系统支持通过自定义注解与JSON解析框架结合使用,为JSON字段指定别名。你可以定义一个注解,例如@JsonAlias,然后在你的数据模型中使用这个注解来标记需要别名的字段。

以下是一个简单的示例:

// 自定义注解
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface JsonAlias {
    String value();
}

// 数据模型
public class User {
    @JsonAlias("user_name")
    private String userName;

    // getter和setter方法
}

请注意,这里的代码示例是概念性的,实际在鸿蒙系统中你需要使用鸿蒙提供的JSON解析库,并且该库需要支持自定义注解。你需要确保你的JSON解析库能够识别并处理@JsonAlias注解。

如果解析库本身不支持自定义注解,你可能需要手动处理JSON字符串,或者在解析后手动映射字段。

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

回到顶部