【发布时间】:2018-12-13 19:17:43
【问题描述】:
我正在尝试为所有 json Map<String, String> 查找全局 ObjectMapper 配置(或任何其他自定义)以反序列化为没有 null 值的映射(应该有一个空字符串)
例如
class MyClass {
Map<String, String> dict;
String str;
public MyClass() {
}
public MyClass(Map<String, String> dict, String str) {
this.dict = dict;
this.str = str;
}
public Map<String, String> getDict() {
return dict;
}
public String getStr() {
return str;
}
}
...
final Map<String, String> dict = new HashMap<>();
dict.put("k1", "v1");
dict.put("k2", null);
final MyClass myClass = new MyClass(dict);
final String valueAsString = objectMapper.writeValueAsString(myClass);
final MyClass deserialized = objectMapper.readValue(valueAsString, MyClass.class);
deserialized.getDict().get("k2"); // = "" (empty String)
deserialized.getStr(); // = null
我知道我可以通过使用 @JsonDeserialize(using = MyDeserializer.class) 注释我的类来完成每个 POJO
但我希望它适用于所有地图。
我也尝试过调整这个 solution 以用于反序列化,但它会抛出 NullPointerException
更新:“空到空”转换需要仅在地图上(使用字符串值)起作用。 (参见上面的更新示例)
【问题讨论】:
标签: java json dictionary null jackson