0

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

如何进行此日期转换?我宁愿有一种方法可以编写一次逻辑并应用于所有 Date 属性,因为这始终是我的日期格式。

我无法更改从 Web 服务返回的日期格式,我的 iPhone 客户端已经在使用它。

4

2 回答 2

1

这是我的反序列化器

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;
    }
}

这是用法

@JsonDeserialize(using = DateDeserializer.class)   
@JsonProperty("DatOfBirth")
public void setDateOfBirth(Date dateOfBirth) {
   this.dateOfBirth = dateOfBirth;
}
于 2013-10-03T23:45:28.047 回答
-1

@Temporal(TemporalType.DATE) @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy", locale = "pt-BR", timezone = "UTC")

这一成功,您必须将其配置到您的数据竞价模型中

例如:@Temporal(TemporalType.DATE) @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy", locale = "pt-BR", timezone = "UTC") private String expiryDate;

于 2020-04-03T02:58:50.513 回答