public class MessageDeserializer extends JsonDeserializer<Message> {
@Override
public Message deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
throws IOException, JsonProcessingException {
// YOU DESERIALIZER CODE HERE
}
}
// import com.fasterxml.jackson.core.type.TypeReference;
// import com.fasterxml.jackson.databind.ObjectMapper;
// get your <T> type
final Type entryType = ...
// Create a new TypeReference object and convert
return new ObjectMapper().readValue(jsonString, new TypeReference<>() {
@Override
public Type getType() {
return entryType;
}
});
6条答案
按热度按时间dced5bon1#
如果你需要把传入的jsonMap到你的List,你可以这样做
编辑
像这样的东西,完全未经测试,从来没有做过
fjaof16o2#
您需要使用
@JsonDeserialize(using = MessageDeserializer.class)
对类进行注解,并实现自定义反序列化器:@请参见此处的示例:How Do I Write a Jackson JSON Serializer & Deserializer?
kyxcudwk3#
自版本2.11(2020年4月)起,Jackson拥有
readerForListOf
方法(文档):kupeojn64#
这应该适用于简单的POJO和集合:
uoifb46i5#
如果您需要读取泛型List中的json,请执行以下操作
您json列表对象和bean类
现在您可以使用HashMap读取这个json
类似于
shyt4zoc6#
短得多的东西:
其中,
EntryType
是对要在集合中保留的类型的引用。它可以是任何Java类。例如,要读取JSON表示形式(如["a", "b", "c"]
),Map器的第二个参数应为new TypeReference<List<String>>() {}