【问题标题】:jerse Client using JacksonJsonProvider date deserializationjerse 客户端使用 JacksonJsonProvider 日期反序列化
【发布时间】:2012-11-12 16:54:16
【问题描述】:

我在客户端的日期反序列化有问题。我必须构建一个使用 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"))

感谢您的帮助。

【问题讨论】:

    标签: json jersey jackson deserialization


    【解决方案1】:

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

    为您要检索的模型创建一个 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 保存为日期,因为 Jackson 正在寻找将字符串作为参数的“工厂”方法,如果找不到日期的话。

    【讨论】:

      猜你喜欢
      • 2010-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-21
      • 1970-01-01
      • 2011-01-08
      • 1970-01-01
      • 2016-09-11
      相关资源
      最近更新 更多