0

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

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

我试过使用这个解决方案,但它对我不起作用: 如何使用杰克逊反序列化 JS 日期?

我需要这种格式的日期:“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"))

谢谢您的帮助。

4

1 回答 1

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

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

如果这很难看,您可以在内部将 lastModified 保存为日期,因为如果找不到日期,杰克逊正在寻找将字符串作为参数的“工厂”方法。

于 2012-11-13T08:10:41.807 回答