jackson转list
时间: 2023-09-05 11:12:51 浏览: 103
在使用Jackson库将JSON转换为List时,有两种常见的方式可以实现。
第一种方式是使用ObjectMapper类的readValue方法结合constructParametricType方法。首先,创建一个ObjectMapper实例。然后,将JSON字符串和目标集合类型(List)以及元素类型(DtoBean)作为参数传递给readValue方法。最后,使用constructParametricType方法将集合类型和元素类型传递给getTypeFactory方法,并返回JavaType对象。具体代码示例如下:
```java
public void testConvert() {
final ObjectMapper mapper = new ObjectMapper();
String jsonString = "[{\"id\": \"123\",\"name\": \"李四\"},{\"id\": \"6666\",\"name\": \"李五\"}]";
JavaType collectionType = getCollectionType(mapper, List.class, DtoBean.class);
List<DtoBean> lst = mapper.readValue(jsonString, collectionType);
}
public static JavaType getCollectionType(ObjectMapper mapper, Class<?> collectionClass, Class<?>... elementClasses) {
return mapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
}
```
第二种方式是使用ObjectMapper类的readValue方法结合TypeReference类。与第一种方式不同的是,直接传递JSON字符串和TypeReference对象作为参数给readValue方法。具体代码示例如下:
```java
public void testConvert() {
final ObjectMapper mapper = new ObjectMapper();
String jsonString = "[{\"id\": \"123\",\"name\": \"李四\"},{\"id\": \"6666\",\"name\": \"李五\"}]";
List<DtoBean> list = mapper.readValue(jsonString, new TypeReference<List<DtoBean>>(){});
}
```
这两种方式都可以将JSON字符串转换为List<DtoBean>对象,但第一种方式中的constructParametricType方法被认为是过时的,不建议再继续使用。因此,建议使用第二种方式来进行转换。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [jackson将json数组转换为List的两种方式](https://blog.csdn.net/weixin_41381822/article/details/84555438)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文