java - 使用 Jackson 的自定义 JSON 映射

标签 java json jackson

我有一个 POJO

class Product {
    String name;
    Size size;
} 

所以,我想将一个反序列化的 JSON 映射到我的 POJO。如果我的 JSON 中有这两个属性,那不是问题。

但就我而言,有时大小不会成为 JSON 的一部分。可能有第三个属性“类型”,我将根据它来设置我的尺寸。我不想在我的 POJO 中包含“类型”。有没有 jackson 注释可以做到这一点?

最佳答案

编写自定义反序列化器:

SimpleModule module =
  new SimpleModule("ProductDeserializerModule",
      new Version(1, 0, 0, null));
module.addDeserializer(Product.class, new ProductJsonDeserializer());

mapper = new ObjectMapper();
mapper.registerModule(module);

//...

class ProductJsonDeserializer extends JsonDeserializer<Product>
{
  @Override
  public Product deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException
  {
    // handle here if exist a third attribute 'type' and create the product 
  }
}

更多信息在这里:http://wiki.fasterxml.com/JacksonHowToCustomDeserializers

关于java - 使用 Jackson 的自定义 JSON 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20190350/

相关文章:

java - 无法使用 Jackson 将 JSON HTTP 响应转换为 Java 对象

java - 如何使用java在shell脚本中传递用户名和密码

java - 变量 j 的值如何增加到 6

arrays - 在 swift 3 中使用 Json

javascript - 使用 jQuery 从 JSON 访问数据

java - 使用 Jackson 反序列化从 .NET 生成的 JSON 字符串

java - 如何对具有多个地址的用户进行建模?

java - 在请求之间用 spring 保持状态

jquery - 基于 GUI 或基于 Web 的 JSON 编辑器,其工作方式类似于属性浏览器

java - 如何获取 Jackson 认为的类的属性列表?