我正在使用Jackson从JSON创建Java对象.假设我有一个像这样的JSON字符串:
{"a":"a", "b":"b", "c":"c"}
Run Code Online (Sandbox Code Playgroud)
和这样的pojo:
@JsonIgnoreProperties(ignoreUnknown = true)
public class A {
private String a;
private String b;
// ...
}
Run Code Online (Sandbox Code Playgroud)
所以c显然是一个未知的属性 - 它将被遗漏.我在想,有什么方法可以记录c未知并被忽略了吗?
Sot*_*lis 19
我不知道有任何内置工具可以做到这一点.你可以写自己的@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);
}
Run Code Online (Sandbox Code Playgroud)
在课程中,你要反序列化,例如.你的A班级.
@JsonAnySetter当用于 Map 字段时将捕获所有未映射的属性。与 配对时@JsonAnyGetter可用于序列化和反序列化:
@JsonAnyGetter
@JsonAnySetter
private Map<String, Object> dynamicValues = new LinkedHashMap<>();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3474 次 |
| 最近记录: |