【问题标题】:Spring RestTemplate & Jackson - date conversion?Spring RestTemplate & Jackson - 日期转换?
【发布时间】:2013-10-10 19:26:48
【问题描述】:

我使用 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 属性,因为这始终是我的日期格式。

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

【问题讨论】:

  • 您将需要一个自定义的JsonDeserializer,它获取String 的毫秒部分并将其解析为Long 以创建Date 对象。

标签: java spring jackson resttemplate


【解决方案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;
}

【讨论】:

    【解决方案2】:

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

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

    例如: @Temporal(TemporalType.DATE) @JsonFormat(形状 = JsonFormat.Shape.STRING,模式 = “dd/MM/yyyy”,区域设置 = “pt-BR”,时区 = “UTC”) 私有字符串到期日期;

    【讨论】:

      猜你喜欢
      • 2018-02-24
      • 2017-05-20
      • 2016-01-11
      • 1970-01-01
      • 2015-06-25
      • 2019-05-11
      • 2011-12-02
      • 2013-01-11
      • 2020-03-28
      相关资源
      最近更新 更多