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

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

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

{
      "promoted_by": "",
      "parent": "",
      "caused_by": "jenkins",
      "watch_list": "prod",
      "u_automation": "deep",
      "upon_reject": "cancel"
}

DTO示例:

@Data
public class TicketDTO {

    private String promotedBy;
    private String parent;
    private String causedBy;
    private String watchList;
    private String uAutomation;
    private String uponReject;
}

Map器:

@Mapper(componentModel = "spring")
public interface ITicketMapper {

    default TicketDTO toDTO(JsonObject ticket) {
        Gson gson = new GsonBuilder()
            .setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)
            .create();

        return gson.fromJson(incident, TicketDTO.class);
    }

}

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

qvtsj1bj

qvtsj1bj1#

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

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

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

相关问题