HarmonyOS 鸿蒙Next:服务器返回的json数据,key是下划线的,如何转成对象时,变成驼峰的key

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

HarmonyOS 鸿蒙Next:服务器返回的json数据,key是下划线的,如何转成对象时,变成驼峰的key

有没有类似flutter的转化?

@JsonKey(name: ‘brief_introduction’)
String briefIntroduction;


更多关于HarmonyOS 鸿蒙Next:服务器返回的json数据,key是下划线的,如何转成对象时,变成驼峰的key的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

使用ohpm命令安装包:

ohpm install class-transformer

ohpm install reflect-metadata

安装之后,参考下方代码即可实现下划线转驼峰

import 'reflect-metadata';
import { Expose, instanceToPlain, plainToInstance, Type } from 'class-transformer';

class Test {
[@Expose](/user/Expose)({ name: "my_hit" }) //1. 设置
myHit: number = 0;
[@Expose](/user/Expose)({ name: "meta_data" })
[@Type](/user/Type)(() => AuthorMeta) //保证嵌套类型反序列化后可以正常转成目标class
meta: AuthorMeta = new AuthorMeta();
}

class AuthorMeta {
[@Expose](/user/Expose)({ name: 'focus_count' })
focusCount: number = 10;
}

[@Entry](/user/Entry)
[@Component](/user/Component)
struct JSONIndex {
build() {
Column() {
Button('click me')
.onClick(() => {
// 序列化示例
let test = new Test();
test.myHit = 100;

let serializedData = instanceToPlain(test); // 2.转换
let jsonstr = JSON.stringify(serializedData); //3. 输出
console.info(`DZG test jsonstring: ${jsonstr}`);

// 反序列化示例
let deserTest: Test = JSON.parse(jsonstr);
let deserData = plainToInstance(Test, deserTest);
console.info(`DZG test instance value of myHit:${deserData.myHit} metaData's focusCount:${deserData.meta.focusCount}`)
})
}
}
}

更多关于HarmonyOS 鸿蒙Next:服务器返回的json数据,key是下划线的,如何转成对象时,变成驼峰的key的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


怎么样可以获得class对应的代码?有没有在线生成的网站

嘛意思?说清楚点呢

在HarmonyOS鸿蒙Next开发中,如果你需要将服务器返回的JSON数据中下划线命名的key转换为驼峰命名的属性,可以在Java或Kotlin中使用Jackson或Gson库进行配置。

使用Jackson

  1. 添加依赖:确保你的项目中包含Jackson的依赖。

  2. 配置ObjectMapper

    ObjectMapper mapper = new ObjectMapper();
    mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
    YourClass obj = mapper.readValue(jsonString, YourClass.class);
    

    这样,Jackson会自动将JSON中的下划线命名转换为Java对象的驼峰命名。

使用Gson

  1. 添加依赖:确保你的项目中包含Gson的依赖。

  2. 自定义FieldNamingPolicy

    Gson gson = new GsonBuilder()
        .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
        .create();
    YourClass obj = gson.fromJson(jsonString, YourClass.class);
    

    注意:Gson的默认行为是将Java对象的驼峰命名转换为JSON中的下划线命名。若要实现反向转换,你需要自定义解析逻辑或使用其他库。

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

回到顶部