jersey使用JacksonJsonProvider日期反序列化的客户端

时间:2012-11-12 16:54:17

标签: json jersey jackson deserialization

我在客户端遇到日期反序列化问题。我必须构建一个使用JSON的简单桌面java应用程序。我的代码:

ClientConfig config = new DefaultClientConfig();
config.getClasses().add(JacksonJsonProvider.class); 
Client client = Client.create(config);

我尝试使用此解决方案,但它对我不起作用: How to deserialize JS date using Jackson?

我需要这种格式的日期:“dd.MM.yyyy。”,但无论如何我都会收到此错误:

Can not construct instance of java.util.Date from String value '12.10.1971.': not a valid representation (error: Can not parse date "12.10.1971.": not compatible with any of standard forms ("yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd"))

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我仍然认为你的链接答案应该有效,但这是另一种可以帮助你的方法。

为要检索的模型创建Java对象。

假设这是一个包含2个字段的项目:

public class Item {
    private String name;
    private String lastModified;

    public Item() {}

    public String getName() {
        return name;
    }

    public Item setName(String name) {
        this.name = name;
        return this;
    }

    public String getLastModified() {
        return lastModified;
    }

    public Modifiable setLastModified(String lastModified) {
        this.lastModified = lastModified;
        return this;
    }
}

杰克逊不会尝试解析它,因为它会查看你的代码并知道它是一个字符串而不是一个日期对象。 你可以自己解析它。

如果这很难看,你可以将lastModified作为日期保留在内部,因为杰克逊正在寻找“工厂”方法,如果没有找到日期,那么它将作为参数作为字符串。