我已经阅读了一些帖子,但找不到适合我问题的解决方案。
我正在尝试序列化/反序列化HashMap<String, Object>
。这里哈希映射的值可以是什么?
当我将一个名为&#34; JobData&#34;的类添加到Map for serialize / deserialize时,我在反序列化objectMapper时看到了一些问题。
以下是示例代码
public class JobData {
private FinalResult finalResult;
public FinalResult getFinalResult(){
return finalResult;
}
public void setFinalResult(FinalResult finalResult) {
this.finalResult = finalResult;
}
}
public class FinalResult<T> {
private Map<T, Exception> exceptionMap;
public HashMap<T, Exception> getFailedExceptionMap(){
return exceptionMap;
}
public void setFailedExceptionMap(Map<T, Exception> map){
exceptionMap = map;
}
}
Map<String, Object> data = new HashMap<String, Object>();
JobData jobdata = new JobData();
FinalResult result = new FinalResult();
Map<Integer, Exception> exceptionMap = new HashMap<Integer, Exception>();
exceptionMap.put(new Integer("1233456"), new Exception("MY_ERROR", "TESTING ERROR"));
result.setFailedExceptionMap(exceptionMap);
exportJobdata.setFinalResult(result);
data.put("JOB_DATA", jobdata);
...............
//Serialization
mapper.writerWithType(HashMap.class).writeValue(arg1, arg0);
.................
//Deserialize
HashMap<String, Object> map = mapper.readValue(in, new TypeReference<HashMap<String, Object>>()
有些链接建议将TypeFactory
用于泛型类型?但不清楚如何使用它?
序列化工作正常,但我在尝试反序列化时遇到错误
com.fasterxml.jackson.databind.JsonMappingException:意外的令牌 (START_OBJECT),预计START_ARRAY:需要包含JSON数组 [。来源:类java.util.Map的AsPRAPPER_ARRAY类型信息 java.io.ByteArrayInputStream@13eb8acf; line:1,column:1251](通过 参考链: 的java.util.HashMap [&#34; JOB_DATA&#34;] - &GT; com.sample.JobData [&#34; finalResult&#34;] - &GT; com.sample.FinalResult [&#34; failedExceptionMap&#34; ]) 在 com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:261)