收集杰克逊的未知属性

时间:2015-07-01 14:45:51

标签: java jackson

我正在使用Jackson从JSON创建Java对象。假设我有一个像这样的JSON字符串:

{"a":"a", "b":"b", "c":"c"}

这样的一个pojo:

@JsonIgnoreProperties(ignoreUnknown = true)
public class A {

    private String a;
    private String b;

    // ...
}

所以c显然是一个未知的属性 - 它将被遗漏。我想知道,有什么方法可以记录c未知并被忽略了吗?

1 个答案:

答案 0 :(得分:15)

我不知道有任何内置工具可以做到这一点。您可以使用@JsonAnySetter

编写自己的代码
  

可用于定义非静态的标记注释,   双参数方法(属性的第一个参数名称,第二个值为   设置),用作"后备"否则所有的处理程序   从JSON内容中找到无法识别的属性。

一样使用它
@JsonAnySetter
public void ignored(String name, Object value) {
    // can ignore the 'value' if you only care for the name (though you still need the second parameter)
    System.out.println(name + " : " + value);
}

在您要反序列化的课程中,例如。你的A课程。