使用Gson将具有under_score的JSON属性转换为具有lowerCamel属性的DTO

mzmfm0qo  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(181)

我在尝试将包含under_score属性的JSON响应转换为具有lowerCamelCase属性的DTO时遇到了一些困难。
例如JSON:

  1. {
  2. "promoted_by": "",
  3. "parent": "",
  4. "caused_by": "jenkins",
  5. "watch_list": "prod",
  6. "u_automation": "deep",
  7. "upon_reject": "cancel"
  8. }

DTO示例:

  1. @Data
  2. public class TicketDTO {
  3. private String promotedBy;
  4. private String parent;
  5. private String causedBy;
  6. private String watchList;
  7. private String uAutomation;
  8. private String uponReject;
  9. }

Map器:

  1. @Mapper(componentModel = "spring")
  2. public interface ITicketMapper {
  3. default TicketDTO toDTO(JsonObject ticket) {
  4. Gson gson = new GsonBuilder()
  5. .setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)
  6. .create();
  7. return gson.fromJson(incident, TicketDTO.class);
  8. }
  9. }

这个例子当然不起作用,我想知道是否有可能用Gson来做这个转换。
谢谢你的帮助。

qvtsj1bj

qvtsj1bj1#

您应该使用LOWER_CASE_WITH_UNDERSCORES
在Gson中使用这个命名策略会将Java字段名从 Camel 形修改为小写的字段名,其中每个单词用下划线(_)分隔。

  • 某字段名称---〉某字段名称
  • 某个字段名称---〉_某个字段名称
  • a字符串字段---〉a字符串字段
  • aURL ---〉a_u_r_l
  1. setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)

UPPER_CAMEL_CASE用于不同的目的
在Gson中使用此命名策略将确保在序列化为JSON格式时Java字段名的第一个“字母”大写。

相关问题