java - Jackson JSON 反序列化为 java.util.Date 不起作用

标签 java json rest jackson deserialization

我们正在尝试将 java.util.Date 对象发送到我们的 REST 资源,但 Jackson 将传入日期 1348696800000 的 JSON 字符串反序列化为值为 163469056-01-01 的日期00:00:00.0。可能是什么问题呢?

我们的 REST 资源:

@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response create(A a) {
}

POJO:

@XmlRootElement(name = "A")
public class A {
    private Date startDate;
}

JSON:

{ ... "startDate":1348696800000, ... }

如果 Jackson 将日期序列化为毫秒,它应该能够再次反序列化它。我真的不想写 custom deserializer为此,我必须为客户端和服务器端的每个日期属性进行声明..

最佳答案

因此,我们决定解决该问题,并让我们的客户端创建格式化的日期字符串,以使用自定义发送到 REST 服务器

public class JsonDateSerializer extends JsonSerializer<Date> {

    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");

    @Override
    public void serialize(Date date, JsonGenerator gen, SerializerProvider provider)
            throws IOException, JsonProcessingException {

        String formattedDate = dateFormat.format(date);

        gen.writeString(formattedDate);
    }

关于java - Jackson JSON 反序列化为 java.util.Date 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12638619/

相关文章:

运行 grunt 后添加 %20(空格)的 Javascript URL 字符串

java - Spring Data Rest FetchType

java - 使用 Java EE 注释通过 JUnit 进行 REST 服务测试

jquery - HTTP POST 正文的 MIME 与 JSON

java - 返回通用类型的交集

java - java中使用四种方法统计并显示文件中的行数、单词数、字符数

java - 如何使用字符串创建 txt 文件并将其上传到 Google 云端硬盘

java - 如何将外部 jar 文件添加到 Maven Shade 插件

python - 从 URL 请求加载 JSON 文件

json - 我如何在 weka 中使用 JSON 文件