淘先锋技术网

首页 1 2 3 4 5 6 7

Java中的JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于Web服务中。而将JSON字符串转换成Java中的Map对象,是Java编程中常见的处理方法。

下面是一段示例代码:

public MapjsonToMap(String jsonString) throws Exception {
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.readValue(jsonString, new TypeReference>(){});
}

该代码中使用了Jackson JSON库的ObjectMapper类,通过readValue()方法将JSON字符串转换成Map对象。需要注意的是,返回值的泛型使用了TypeReference类,因为Map无法直接作为Class的参数。

这个方法可以处理简单的JSON字符串,如:{"name":"张三","age":28}

但是,当JSON字符串中嵌套了多层对象时,就需要对代码进行修改:

public MapjsonToMap(String jsonString) throws Exception {
ObjectMapper objectMapper = new ObjectMapper();
JsonNode root = objectMapper.readTree(jsonString);
Mapmap = new HashMap<>();
Iterator>it = root.fields();
while (it.hasNext()) {
Map.Entryentry = it.next();
if (entry.getValue().isObject()) {
map.put(entry.getKey(), jsonToMap(entry.getValue().toString()));
} else if (entry.getValue().isArray()) {
Listlist = new ArrayList<>();
for (JsonNode node : entry.getValue()) {
if (node.isObject()) {
list.add(jsonToMap(node.toString()));
} else {
list.add(node.asText());
}
}
map.put(entry.getKey(), list);
} else {
map.put(entry.getKey(), entry.getValue().asText());
}
}
return map;
}

这个方法通过递归的方式处理JSON字符串中的多层嵌套对象和数组。需要注意的是,在处理数组时,需要判断数组元素是不是对象。