我正在使用struts2并序列化对象并将其传递给JSP。从jsp我再次将此对象传递给java并尝试使用以下代码反序列化它
ObjectMapper objectMapper=new ObjectMapper();
receiptDocument = objectMapper.readValue(receiptDocumentStr,new TypeReference<ReceiptDocument>(){});
被序列化的Object在Timestamp中有一个属性。因此,当序列化时,日期将转换为以下格式2006-10-04T19:49:49。但是当我尝试反序列化它时,它会给出异常
org.codehaus.jackson.map.JsonMappingException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]
请建议我如何对其进行反序列化。
答案 0 :(得分:1)
尝试按照here
所述使用 objectMapper.setDateFormat(myDateFormat);
答案 1 :(得分:0)
我试图对JSON对象进行反序列化,使用struts2通过以下代码发送到jsp
@Result(name = SUCCESS, type = JSON, params = {
"ignoreHierarchy", "false", "includeProperties","bookList\\[\\d+\\]\\..*})
但是当我使用jquery post
将此bookList发送到服务器并尝试反序列化时,它无效。所以我按照以下方式序列化了
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
ObjectMapper mapper = new ObjectMapper();
mapper.getSerializationConfig().setDateFormat(sd);
bookListJsonString= mapper.writeValueAsString(bookList);
在反序列化代码中,如下所示
ObjectMapper objectMapper=new ObjectMapper();
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
objectMapper.getDeserializationConfig().setDateFormat(sd);
objectMapper.getDeserializationConfig().disable(Feature.FAIL_ON_UNKNOWN_PROPERTIES); //To avoid failure if there is no any class fields.
List<BooksDocument> bookList = objectMapper.readValue(bookListJsonString, new TypeReference<List<BooksDocument>>() {});
如果有人有更好的方法去做。请发布。