ObjectMapper mapper = new ObjectMapper(); 将json string转为map
时间: 2025-05-26 08:42:52 浏览: 21
### 使用 Jackson 将 JSON 字符串转换为 Map 的示例
在 Java 中,可以利用 Jackson 库中的 `ObjectMapper` 类轻松地将 JSON 字符串解析为 `Map`。以下是具体实现方法。
#### 示例代码
下面展示了如何通过 `ObjectMapper` 将 JSON 字符串转换成 `Map<String, Object>` 或者更具体的泛型形式:
```java
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.util.Map;
public class JsonStringToMapExample {
public static void main(String[] args) {
String jsonInString = "{\"name\":\"mkyong\",\"age\":33,\"position\":\"Developer\",\"salary\":7500,\"skills\":[\"java\",\"python\"]}";
ObjectMapper objectMapper = new ObjectMapper();
try {
// Convert JSON string to Map<String, Object>
Map<String, Object> map = objectMapper.readValue(jsonInString, new TypeReference<Map<String, Object>>() {});
// Print the result
System.out.println(map);
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
#### 关键点解释
1. **TypeReference 的作用**
当目标类型较为复杂(如带有泛型的集合类)时,需使用 `TypeReference` 来保留泛型信息[^3]。在此处,它用于指定返回的是一个 `Map<String, Object>` 类型的对象。
2. **JSON 结构与 Map 映射的关系**
JSON 对象本质上是由键值对组成的结构,这使其非常适合被表示为 Java 中的 `Map<K, V>` 形式。其中,K 表示键(通常是字符串),V 可能是基本数据类型、数组或其他嵌套对象[^4]。
3. **异常处理机制**
方法 `readValue()` 抛出了 `IOException` 异常,因此需要将其封装在一个 `try-catch` 块中以便能够捕捉到可能发生的错误情况并作出相应反应。
---
###
阅读全文
相关推荐






@GetMapping("admin/dataAnalysis.html") // 确保映射路径包含.html public String dataAnalysis(Model model) throws JsonProcessingException { // 1. 获取数据 Map<String, Integer> userTypeCount = userService.getUserTypeCount(); // 2. 将Map转换为JSON字符串 ObjectMapper mapper = new ObjectMapper(); String userTypeCountJson = mapper.writeValueAsString(userTypeCount); model.addAttribute("userTypeCountJson", userTypeCountJson); // 3. 返回视图名称(不带后缀) return "admin/dataAnalysis"; } Data Analysis <script th:inline="javascript"> document.addEventListener("DOMContentLoaded", function() { try { // 解析后端传递的JSON数据 var userTypeCount = JSON.parse([[${userTypeCountJson}]]); console.log("原始数据:", userTypeCount); // 数据转换 var data = []; for (var key in userTypeCount) { data.push({ name: key.toString(), value: userTypeCount[key] }); } // 初始化图表 var chartDom = document.getElementById('main'); var myChart = echarts.init(chartDom); myChart.setOption({ title: { text: '用户类型占比', left: 'center' }, tooltip: { trigger: 'item' }, series: [{ type: 'pie', radius: '50%', data: data }] }); } catch (error) { console.error("图表初始化失败:", error); } }); </script> 怎么死活显示不出来饼图












