首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Jackson读取泛型列表中的json

Jackson读取泛型列表中的json
EN

Stack Overflow用户
提问于 2013-08-01 03:36:24
回答 4查看 66.1K关注 0票数 34

我使用Jackson来阅读json消息。我试图解析的其中一个值是一个列表,另一个值包含列表中数据的类型。这是我用java创建的结构。

public class Message<T> {
   private Timestamp time;
   private RestAction action;
   private String type;
   private List<T> data;
}

通过Class.forName();,我可以获得表示列表中数据的类。问题是我怎样才能读懂这个列表。

EN

回答 4

Stack Overflow用户

发布于 2013-12-05 19:19:56

短得多的东西:

mapper.readValue(jsonString, new TypeReference<List<EntryType>>() {});

其中,EntryType是对您希望保存在集合中的类型的引用。它可以是任何Java类。例如,要读取["a", "b", "c"]等JSON表示,映射器的第二个参数应为new TypeReference<List<String>>() {}

票数 94
EN

Stack Overflow用户

发布于 2013-08-01 03:48:51

您需要使用@JsonDeserialize(using = MessageDeserializer.class)注释您的类,并实现自定义的反序列化程序:

public class MessageDeserializer extends JsonDeserializer<Message> {
  @Override
  public Message deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
    throws IOException, JsonProcessingException {
    // YOU DESERIALIZER CODE HERE
  }
}

@请在此处查看示例:How Do I Write a Jackson JSON Serializer & Deserializer?

票数 4
EN

Stack Overflow用户

发布于 2021-05-06 18:47:53

从版本2.11 (2020年4月)开始,杰克逊就有了readerForListOf方法(documentation):

ObjectMapper mapper = ObjectMapper().configure(...);
ObjectReader reader = mapper.readerForListOf(MyClass.class);
List<MyClass> list = reader.readValue(...);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17979346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档