我得到了错误http://jira.codehaus.org/browse/JACKSON-288,但它说该错误应该已在版本 1.6.2 中修复。
我参考了很多线程,例如
Jersey JSON 和 Date
如何通过 xml 将 Date(ActionScript 3) 转换为 java.util.Date?
我尝试了 1.12、1.14、1.17.1 版本,都不能在我这边工作。
@XmlRootElement(name="info")
@XmlAccessorType(XmlAccessType.NONE)
public class InfoVO {
private int infoId;
@XmlElement
@XmlJavaTypeAdapter(DateAdapter.class)
private Date createTime;
//...get/set
}
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.ws.rs.WebApplicationException;
import javax.xml.bind.annotation.adapters.XmlAdapter;
public class DateAdapter extends XmlAdapter<String, Date> {
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@Override
public String marshal(Date v) {
return dateFormat.format(v);
}
@Override
public Date unmarshal(String v) {
try {
return dateFormat.parse(v);
} catch (ParseException e) {
throw new WebApplicationException();
}
}
}
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>jsr250-api</artifactId>
<version>1.0</version>
</dependency>
但是根本无法调用 DateAdapter 并且出现异常,
2013-06-12 11:11:13.363:WARN::/xa/info/save/12121: org.codehaus.jackson.map.JsonMappingException: 无法从字符串值 '2013-06 构造 java.util.Date 的实例-08 08:00:00':不是有效的表示(错误:无法解析日期“2013-06-08 08:00:00”:不兼容任何标准形式(“yyyy-MM-dd'T' HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd "))| 在 [来源:java.io.StringReader@b0ff5e1;行:8,列:23](通过引用链:com.xchange.me.vo.InfoVO["createTime"])