我使用Jackson来阅读json消息。我试图解析的其中一个值是一个列表,另一个值包含列表中数据的类型。这是我用java创建的结构。
public class Message<T> {
private Timestamp time;
private RestAction action;
private String type;
private List<T> data;
}
通过Class.forName();
,我可以获得表示列表中数据的类。问题是我怎样才能读懂这个列表。
发布于 2013-12-05 19:19:56
短得多的东西:
mapper.readValue(jsonString, new TypeReference<List<EntryType>>() {});
其中,EntryType
是对您希望保存在集合中的类型的引用。它可以是任何Java类。例如,要读取["a", "b", "c"]
等JSON表示,映射器的第二个参数应为new TypeReference<List<String>>() {}
发布于 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?
发布于 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(...);
https://stackoverflow.com/questions/17979346
复制相似问题