[英]How to use Jackson to deserialize an array of objects when we have written custom deserializer
i have written one custom deserializer , which will take the string and deserialize it public static class MyDeserializer extends JsonDeserializer { 我已经编写了一个自定义反序列化器,它将使用字符串并将其反序列化。公共静态类MyDeserializer扩展了JsonDeserializer {
@Override
public MyClass deserialize(JsonParser parser,
DeserializationContext deserializer) throws IOException {
Myclass obj = new Myclass();
while(!parser.isClosed()) {
JsonToken jsonToken = parser.nextToken();
if (JsonToken.FIELD_NAME.equals(jsonToken)) {
String fieldName = parser.getCurrentName();
System.out.println(fieldName);
jsonToken = parser.nextToken();
switch(fieldName) {
-----set the fields of obj
}
}
return obj
}
This can serialize one object at a time , i want to create a list of objects 这一次可以序列化一个对象,我想创建一个对象列表
tried this 试试这个
JavaType mapType = MAPPER.getTypeFactory().constructCollectionType(List.class, Myclass.class);
List <MyClass> mylist = (List<MyClass>)MAPPER.readValue(jsonString,mapType);
This is not working and no error is thrown , just stuck while deserializing it Do we need to split json array and call deserializer for every object or modify the custom deserializer to create list of objects 这是行不通的,并且没有引发任何错误,只是在反序列化时卡住了吗?我们需要拆分json数组并为每个对象调用解串器,还是修改自定义解串器以创建对象列表
Hm, I do not get why there is a need for a custom deserializer at all. 嗯,我不明白为什么根本不需要自定义解串器。
IMHO you could just do: 恕我直言,你可以做:
List <MyClass> mylist = MAPPER.readValue(jsonString, new TypeReference<List<MyClass>>() {});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.