Java 春晚;杰克逊-日期转换?
我使用RestTemplate和Jackson框架作为我的web服务层。 我的数据映射是基于注释的Java 春晚;杰克逊-日期转换?,java,spring,jackson,resttemplate,Java,Spring,Jackson,Resttemplate,我使用RestTemplate和Jackson框架作为我的web服务层。 我的数据映射是基于注释的 public class User { private String name; private Date dateOfBirth; @JsonProperty("Name") public void setName(String name) { this.name = name; } // Value coming back from MVC
public class User {
private String name;
private Date dateOfBirth;
@JsonProperty("Name")
public void setName(String name) {
this.name = name;
}
// Value coming back from MVC.Net "/Date(1381302000000)/"
@JsonProperty("DatOfBirth")
public void setDateOfBirth(Date dateOfBirth) {
this.dateOfBirth = dateOfBirth;
}
}
如何进行日期转换?
我宁愿有一种方法来编写一次逻辑并应用于所有日期属性,因为这个si总是我的日期格式
我无法更改从web服务返回的日期格式,我的iPhone客户端已经在使用它。这是我的反序列化程序
public class DateDeserializer extends JsonDeserializer<Date>
{
@Override
public Date deserialize(JsonParser jsonParser, DeserializationContext arg1) throws IOException, JsonProcessingException {
ObjectCodec oc = jsonParser.getCodec();
JsonNode node = oc.readTree(jsonParser);
String msDateString = node.getValueAsText();
if (msDateString == null || msDateString.length() == 0)
return null;
String unicodeDateString = msDateString.substring(msDateString.indexOf("(")+1);
unicodeDateString = unicodeDateString.substring(0, unicodeDateString.indexOf(")"));
Date date = new Date(Long.valueOf(unicodeDateString) * 1000);
return date;
}
}
@时态(TemporalType.DATE)
@JsonFormat(shape=JsonFormat.shape.STRING,pattern=“dd/MM/yyyy”,locale=“pt BR”,timezone=“UTC”)
这一次成功了,您必须将其配置到您的数据投标模型中
例:
@时态(TemporalType.DATE)
@JsonFormat(shape=JsonFormat.shape.STRING,pattern=“dd/MM/yyyy”,locale=“pt BR”,timezone=“UTC”)
私有字符串过期日期 您将需要一个定制的
JsonDeserializer
,它获取字符串的毫秒部分
,并将其解析为Long
,以创建日期
对象。
@JsonDeserialize(using = DateDeserializer.class)
@JsonProperty("DatOfBirth")
public void setDateOfBirth(Date dateOfBirth) {
this.dateOfBirth = dateOfBirth;
}