【发布时间】:2015-11-11 02:50:36
【问题描述】:
有一个库类,定义是:
class LibraryBean {
public String tag;
public Map<String, Object> attributes;
}
在我的应用程序代码中,我知道attributes 映射的所有可能键,并且某个键的值类型是固定的,例如,如果键是"location",那么值类型是Location ,如果键是"timestamp",那么值类型是Long。将ArrayList<LibraryBean> 写入 json 字符串很简单,但如何反序列化 json 字符串以使值恢复其类型?
public void test(ArrayList<LibraryBean> sampleList) {
ObjectMapper mapper = new ObjectMapper();
String jsonString = mapper.writeAsString(sampleList);
List<LibraryBean> recovered = mapper.readValue(jsonString); // what should I do here?
// I'm sure sampleList.get(0).attributes.get("location") != null
AssertTrue(sampleList.get(0).attributes.get("location") instanceof Location);
}
【问题讨论】:
-
拥有不同值类型的映射不是一个好主意。考虑为每种类型创建一个映射以避免强制转换。