Java 为分层JSON映射中的特定属性编写自定义反序列化程序

Java 为分层JSON映射中的特定属性编写自定义反序列化程序,java,jackson,deserialization,Java,Jackson,Deserialization,JSON对象: ["emp" : { "departments": [ "modules": [ { "tasks": [ { "resources": 100, "notes": ""

JSON对象:

["emp" : {
        "departments": [
            "modules": [
                {
                    "tasks": [
                        {
                            "resources": 100,
                            "notes": "" 
                        }
                    ]
                }
            ]
        ]
    }]
我想把上面的JSON映射到一个
列表
对象上。我的对象映射器看起来像:
List emps=Arrays.asList(mapper.readValue(jsonString,Emp[].class))

这个简单的对象映射器工作得很好。
我的问题是我必须以不同的方式将
任务
对象从JSON反序列化到
任务
对象

我知道我们可以使用jackson编写自定义反序列化程序,但这并不能解决我的问题。 我已经为
任务
对象编写了一个
CustomedSerializer
,但将其注册到对象映射器(如下所示)将尝试将整个JSON(
列表
)序列化为任务对象。

SimpleModule mod = new SimpleModule("MyModule");
      ObjectMapper mapper = new ObjectMapper();

      mod.addDeserializer(Task.class,
          new CustomDeserializer(Task.class));
      mapper.registerModule(mod);

在解析过程中,是否有方法仅为特定属性指定
自定义反序列化程序
? 还是有其他的选择


注意:我无法更改DTO来修复此问题。

使用Jackson解析JSON有几种方法。您可以使用Jacksons
树模型
解析或
流式API
。两者都需要更多的代码,而不仅仅是
mapper.readValue(jsonString,Emp[].class)
,但这比实现自己的JSON解析要好得多。您可以在Jackson文档中阅读到关于它们的内容

使用Jackson解析JSON有几种方法。您可以使用Jacksons
树模型
解析或
流式API
。两者都需要更多的代码,而不仅仅是
mapper.readValue(jsonString,Emp[].class)
,但这比实现自己的JSON解析要好得多。您可以在Jackson文档中阅读有关它们的信息