Java 春晚;杰克逊-日期转换?

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

我使用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.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;
}