【问题标题】:How to [de]serialize to pojo objects from JSON when there is mixed camel case in names当名称中有混合驼峰大小写时,如何从 JSON [反] 序列化为 pojo 对象
【发布时间】:2015-06-12 08:43:45
【问题描述】:

我正在使用 Dropwizard(在后台使用 Jackson)来创建桥接 API 服务。它连接到其他两个非常相似的 API(API1 和 API2)。

我有自己的 POJO 库,其中包含 API1 和 API2 的请求和响应 POJO。这两个 API 之间的唯一区别是,对于某些对象,API1 发出大写的密钥,而另一个没有。基本上一个 API1 是用 Java 实现的,API2 是用 .NET 实现的,但两者都提供相同的数据。

{
    "Name" : "foo",
    "Address" : "bar"
}

{
    "name" : "foo",
    "address" : "bar"
}

我想避免为每个对象编写一个 POJO 类,否则它们是相同的对象。

告诉杰克逊接受任何一个名字的正确方法是什么?

我知道@JsonProperty 例如

@JsonProperty("Name")
private String name;

但是,即使这对“名称”和“名称”都有效,但感觉有点不整洁。对我来说,声明这个注解应该实际上意味着忽略编码的字段名称而支持注解。

提前致谢

【问题讨论】:

    标签: java jackson dropwizard


    【解决方案1】:

    您可以查看PropertyNamingStrategy,您可以为正在使用的 ObjectMapper 定义它。

    如果对方对所使用的约定不灵活(不接受大写和小写形式),您可以为不同的服务消费者(当您是生产者时)定义不同的策略。

    如果你负担得起使用 Jackson 2.5,那么你可以看看mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true)

    要完全控制 Jackson(反)序列化过程,请在 custom serializationcustom deserialization 上抢购。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-30
      • 1970-01-01
      • 2012-12-01
      相关资源
      最近更新 更多