JSON字符串转换成Java集合对象
在Java中,将JSON字符串转换成Java集合对象通常涉及到使用JSON处理库,如Jackson或Google的Gson。以下是使用这两个库的示例:
使用Jackson
-
添加Jackson依赖:如果你使用Maven,可以在
pom.xml
文件中添加以下依赖:<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.13.0</version> </dependency>
-
转换JSON字符串:
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.core.type.TypeReference; import java.util.List; import java.util.Map; public class JsonToJava { public static void main(String[] args) { String jsonStr = "[{\"name\":\"John\"}, {\"name\":\"Jane\"}]"; ObjectMapper mapper = new ObjectMapper(); try { // 将JSON字符串转换为List<Map<String, String>> List<Map<String, String>> list = mapper.readValue(jsonStr, new TypeReference<List<Map<String, String>>>() {}); System.out.println(list); // 如果JSON是一个对象 String jsonObj = "{\"name\":\"John\", \"age\":30}"; Map<String, Object> obj = mapper.readValue(jsonObj, new TypeReference<Map<String, Object>>() {}); System.out.println(obj); } catch (Exception e) { e.printStackTrace(); } } }
使用Gson
-
添加Gson依赖:如果你使用Maven,可以在
pom.xml
文件中添加以下依赖:<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.8</version> </dependency>
-
转换JSON字符串:
import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import java.util.List; import java.util.Map; public class JsonToJava { public static void main(String[] args) { String jsonStr = "[{\"name\":\"John\"}, {\"name\":\"Jane\"}]"; Gson gson = new Gson(); // 将JSON字符串转换为List<Map<String, String>> List<Map<String, String>> list = gson.fromJson(jsonStr, new TypeToken<List<Map<String, String>>>(){}.getType()); System.out.println(list); // 如果JSON是一个对象 String jsonObj = "{\"name\":\"John\", \"age\":30}"; Map<String, Object> obj = gson.fromJson(jsonObj, new TypeToken<Map<String, Object>>(){}.getType()); System.out.println(obj); } }
在这两个示例中,我们使用了泛型和类型令牌(TypeReference或TypeToken)来指定我们要转换的目标类型。这是因为Java的泛型在运行时会被擦除,所以我们需要额外的信息来告诉库我们期望的目标类型。
请注意,你需要根据你的JSON结构来调整目标类型。例如,如果你的JSON字符串表示一个对象数组,你应该使用 List<MyObject.class>
,其中 MyObject
是一个对应JSON对象结构的Java类。如果你的JSON字符串表示一个简单的值(如字符串、数字等),你可以直接将其转换为相应的Java类型。