我也有同样的问题。 我有一个要转换为ArrayList的json。
帐户看起来像这样。
Account{ Person p ; Related r ; } Person{ String Name ; Address a ; }
以上所有的类都已被正确注解。 我曾尝试TypeReference>(){}但不工作。
它给了我Arraylist,但是ArrayList有一个linkedHashMap,它包含一些包含最终值的更多链接的hashmaps。
我的代码如下:
public T unmarshal(String responseXML,String c) { ObjectMapper mapper = new ObjectMapper(); AnnotationIntrospector introspector = new JacksonAnnotationIntrospector(); mapper.getDeserializationConfig().withAnnotationIntrospector(introspector); mapper.getSerializationConfig().withAnnotationIntrospector(introspector); try { this.targetclass = (T) mapper.readValue(responseXML, new TypeReference>() {}); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return this.targetclass; }
我终于解决了这个问题。 我能够将Jsonstring中的列表直接转换为ArrayList,如下所示:
JsonMarshallerUnmarshaller{ T targetClass ; public ArrayList unmarshal(String jsonString) { ObjectMapper mapper = new ObjectMapper(); AnnotationIntrospector introspector = new JacksonAnnotationIntrospector(); mapper.getDeserializationConfig().withAnnotationIntrospector(introspector); mapper.getSerializationConfig().withAnnotationIntrospector(introspector); JavaType type = mapper.getTypeFactory(). constructCollectionType(ArrayList.class, targetclass.getClass()) ; try { Class c1 = this.targetclass.getClass() ; Class c2 = this.targetclass1.getClass() ; ArrayList temp = (ArrayList) mapper.readValue(jsonString, type); return temp ; } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null ; } }