我在客户端遇到日期反序列化问题。我必须构建一个使用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"))
感谢您的帮助。
答案 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作为日期保留在内部,因为杰克逊正在寻找“工厂”方法,如果没有找到日期,那么它将作为参数作为字符串。