我正在使用Jersey + Jackson开发REST api。
我想转换JSON - > POJO。
我的 Pojo 课程中有日期字段,名为'已创建'。
在字符串'jsonUser'中,我有 Pojo 的json表示。
现在,当我使用以下代码将JSON表示转换为Pojo对象时:
ObjectMapper mapper = new ObjectMapper();
Pojo oldUser = mapper.readValue(jsonUser, Pojo.class);
我收到以下错误:
Exception: Can not construct instance of java.sql.Timestamp from String value '2013-07-29 11:41:00.0': not a valid representation
杰克逊无法反序列化 String
代表到Date
个对象。
如何配置 Jackson 来做到这一点?
答案 0 :(得分:2)
问题可能出在日期转换中。 只需按照以下方式进行:
public class Pojo
{
private String created;
private Date createdDate;
//getter methods.
//setter methods
public void setCreated(String created)
{
this.created = created;
//Logic for converting MySQL-String representation to desired
}
//mapper config
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.setSerializationInclusion(Include.NON_NULL);
mapper.setSerializationInclusion(Include.NON_EMPTY);
mapper.configure(Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true );
}
Pojo oldUser = mapper.readValue(jsonUser, Pojo.class);
mapper
,如果不存在值,可以避免异常。created
为String
字段,createdDate
为。{
Date
字段。 String to Date
。String
上的setter方法正确地将created
分配给POJO。 string-date conversion
逻辑将处理createdDate
字段。希望它有所帮助。
答案 1 :(得分:1)
只需存放它。要获取long值,请使用dateObj.getTime();要从长期使用新日期(longVal)
创建日期对象