【问题标题】:Default Property Naming Strategy in dropwizarddropwizard 中的默认属性命名策略
【发布时间】:2015-09-19 17:29:01
【问题描述】:

在我的 dropwizard 项目中,我有 bean 类,它们在 Resource 类中使用,如下所示:

@GET
@Path("/{id}")
public Response getUser(@PathParam("id") Long id) {
    return Response.ok(userDAO.get(id)).build();
}

class User {

    private String id;

    @JsonProperty("first_name")
    private String firstName;

    @JsonProperty("last_name")
    private String lastName;
}

有没有一种方法可以添加到 dropwizard 配置或应用程序类中,以告诉 javax 使用 snake_case 命名策略将我的 bean 实体(用户)映射到 json。这将帮助我避免对类的每个成员使用 @JsonProperty("first_name") 注释。

在没有上述注释的情况下,我的 json 看起来像这样:

{
    "firstName": "John",
    "lastName": "Doe"
}

I would rather like it to be :
{
    "first_name": "John",
    "last_name": "Doe"
}

【问题讨论】:

    标签: java json dropwizard


    【解决方案1】:

    在另一个 SO 问题上找到答案: How to make @JsonSnakeCase the default for configuration in Dropwizard

    将以下行添加到应用程序中完成这项工作!

    environment.getObjectMapperFactory()
      .setPropertyNamingStrategy(
        PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES)
    

    【讨论】:

      【解决方案2】:

      您可以使用@JsonSnakeCase 注释整个实体以避免注释每个属性。

      否则你可以在你的应用初始化中配置全局 ObjectMapper

      objectMapper.setPropertyNamingStrategy(
        PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-09
        • 2022-01-03
        • 2021-06-18
        • 1970-01-01
        • 1970-01-01
        • 2021-05-05
        • 1970-01-01
        相关资源
        最近更新 更多