springboot中使用objectMapper将json数组字符串转List<Map>,使用new TypeReference
时间: 2024-10-22 14:10:46 浏览: 128
在Spring Boot中,如果你想要将JSON数组转换为`List<Map<String, Object>>`,你可以利用Jackson库提供的`ObjectMapper`工具,并配合`TypeReference`来完成这个操作。`TypeReference`是一个泛型类,它允许你在运行时指定返回结果的类型。
下面是一个示例:
```java
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.core.type.TypeReference;
// 假设你有一个JSON字符串
String jsonString = "[{\"key\":\"value1\"}, {\"key\":\"value2\"}]";
// 创建ObjectMapper实例
ObjectMapper objectMapper = new ObjectMapper();
// 使用TypeReference指定目标类型
List<Map<String, Object>> list = objectMapper.readValue(jsonString, new TypeReference<List<Map<String, Object>>>() {});
// 现在list变量就包含了解析后的Map列表
```
在这个例子中,`readValue()`方法会读取JSON字符串并将其转换为指定类型的列表。
相关问题
java中JSON字符串转成List<Map>
可以使用Jackson库来实现JSON字符串转成List<Map>,具体代码如下:
```java
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.util.List;
import java.util.Map;
public class JsonUtils {
private static final ObjectMapper mapper = new ObjectMapper();
public static List<Map<String, Object>> jsonToListMap(String jsonStr) {
try {
return mapper.readValue(jsonStr, new TypeReference<List<Map<String, Object>>>() {});
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
```
使用示例:
```java
String jsonStr = "[{\"id\":1,\"name\":\"Tom\"},{\"id\":2,\"name\":\"Jerry\"}]";
List<Map<String, Object>> listMap = JsonUtils.jsonToListMap(jsonStr);
for (Map<String, Object> map : listMap) {
System.out.println(map.get("id") + " " + map.get("name"));
}
```
输出结果:
```
1 Tom
2 Jerry
```
字符串转list<map>
### 将字符串解析为 `List<Map>` 类型的方法
对于 Java 编程语言而言,要将 JSON 字符串转换为 `List<Map<String, Object>>` 数据结构,通常会借助第三方库 Jackson 或 Gson 来简化操作过程[^1]。
#### 使用 Jackson 库实现转换
Jackson 是一个高效的 JSON 处理工具,在处理复杂的嵌套对象时尤为出色。下面展示一段利用 Jackson 解析 JSON 字符串到 `List<Map<String, Object>>` 的例子:
```java
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonToListMapExample {
public static void main(String[] args) throws Exception {
String jsonString = "[{\"key\":\"value\"},{\"foo\": \"bar\"}]";
ObjectMapper objectMapper = new ObjectMapper();
List<Map<String, Object>> mapList = objectMapper.readValue(jsonString,
new TypeReference<List<Map<String, Object>>>(){});
System.out.println(mapList);
}
}
```
这段代码通过创建 `ObjectMapper` 实例并调用其 `readValue()` 方法完成了解析工作。这里需要注意的是,当指定目标类型时使用了泛型类型的特殊表示法——`TypeReference`,这使得我们可以更灵活地定义复杂的目标类型。
#### 使用 Gson 库实现相同功能
Gson 同样是一个非常流行的用于序列化和反序列化的开源框架。以下是采用 Gson 进行同样任务的一个实例:
```java
import java.util.List;
import java.util.Map;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class GsonJsonToListMapExample {
public static void main(String[] args){
String jsonInString = "[{'name':'John','age':20}, {'name':'Jane', 'age':30}]";
Gson gson = new Gson();
List<Map<String,Object>> maps = gson.fromJson(
jsonInString,
new TypeToken<List<Map<String, Object>>>(){}.getType()
);
System.out.println(maps);
}
}
```
上述两种方法都可以有效地把给定的 JSON 格式的字符串转化为期望中的 `List<Map<String, Object>>` 结构。选择哪一个取决于项目需求和个人偏好;两者都提供了良好的性能和支持丰富的配置选项。
阅读全文
相关推荐
















