【问题标题】:Jackson: deserialization of Object Array having different Type ItemsJackson:具有不同类型项的对象数组的反序列化
【发布时间】:2014-01-15 14:29:04
【问题描述】:

Jackson:具有不同类型项的对象数组的反序列化

我正在将对象数组转换为 json,效果很好。但是当我尝试从 json 取回对象数组时,有些项目会丢失它们的类型。例如:java.sql.Date 对象被转换为String

例子:

List<Object> list = new ArrayList<Object>();

list.add(BigDecimal.ONE);
list.add(new java.util.Date(System.currentTimeMillis()));

String text = objectMapper.writeValueAsString(list );

List<Object> deserializeList = objectMapper.readValue(text , TypeFactory.defaultInstance().constructCollectionType(ArrayList.class, valueType));

BigDecimal 转换为Integer

Date 转换为String

请帮我在不使用 POJO 类的情况下维护对象数组的数据类型,我需要从我的服务器返回一个多维对象数组到客户端。

【问题讨论】:

    标签: java arrays json object deserialization


    【解决方案1】:

    首先,我不完全了解您的需求和 API,但解决您的问题的最佳方法是使用 POJO,让 Jackson 处理明确的数据类型(而不是对象)。

    但是好吧,你不想要那个。您可以做的是为 Jackson 实现一个自定义反序列化器(请参阅http://wiki.fasterxml.com/JacksonHowToCustomDeserializers)。

    如果你真的想为序列化/反序列化保留一个集合,只需创建一个新类,List 的子类,并为其创建一个自定义反序列化器。

    【讨论】:

      猜你喜欢
      • 2020-07-27
      • 2017-03-27
      • 2018-12-05
      • 2015-04-15
      • 2013-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多