在Java中,对象、List、Map和JSON之间的相互转换是常见的需求,尤其是在与RESTful API交互或处理数据时。以下是如何在这些数据类型之间进行转换的示例:

  1. 对象到JSON

使用库如Jackson或Gson,可以轻松地将Java对象转换为JSON字符串。

使用Jackson:

java复制代码
 import com.fasterxml.jackson.databind.ObjectMapper;  
 
   
 
 // ...  
 
   
 
 ObjectMapper mapper = new ObjectMapper();  
 
 MyObject myObject = new MyObject(/* ... */);  
 
 String jsonString = mapper.writeValueAsString(myObject);

使用Gson:

java复制代码
 import com.google.gson.Gson;  
 
   
 
 // ...  
 
   
 
 Gson gson = new Gson();  
 
 MyObject myObject = new MyObject(/* ... */);  
 
 String jsonString = gson.toJson(myObject);
  1. JSON到对象

同样,使用Jackson或Gson,你可以将JSON字符串转换回Java对象。

使用Jackson:

java复制代码
 ObjectMapper mapper = new ObjectMapper();  
 
 String jsonString = "{\"field1\":\"value1\",\"field2\":123}";  
 
 MyObject myObject = mapper.readValue(jsonString, MyObject.class);

使用Gson:

java复制代码
 Gson gson = new Gson();  
 
 String jsonString = "{\"field1\":\"value1\",\"field2\":123}";  
 
 MyObject myObject = gson.fromJson(jsonString, MyObject.class);
  1. List到JSON

对于List,你可以使用与对象相同的方法,但需要将类型参数设置为List的泛型类型。

使用Jackson:

java复制代码
 List<MyObject> myObjectList = /* ... */;  
 
 String jsonString = mapper.writeValueAsString(myObjectList);

使用Gson:

java复制代码
 String jsonString = gson.toJson(myObjectList);
  1. JSON到List

同样地,你可以将JSON字符串转换回List。

使用Jackson:

java复制代码
 String jsonString = "[{\"field1\":\"value1\",\"field2\":123},{\"field1\":\"value2\",\"field2\":456}]";  
 
 List<MyObject> myObjectList = mapper.readValue(jsonString, new TypeReference<List<MyObject>>(){});

注意这里使用了TypeReference来传递泛型类型信息,因为Java的类型擦除在运行时丢失了类型信息。

使用Gson:

java复制代码
 Type listType = new TypeToken<List<MyObject>>(){}.getType();  
 
 List<MyObject> myObjectList = gson.fromJson(jsonString, listType);
  1. Map到JSON 和 JSON到Map

Map的转换与对象和List的转换类似。你可以直接使用String作为键,并将值转换为适当的类型。

使用Jackson:

java复制代码
 Map<String, Object> map = /* ... */;  
 
 String jsonString = mapper.writeValueAsString(map);  
 
 // ...  
 
 Map<String, Object> newMap = mapper.readValue(jsonString, new TypeReference<Map<String, Object>>(){});

使用Gson:

java复制代码
 String jsonString = gson.toJson(map);  
 
 // ...  
 
 Type mapType = new TypeToken<Map<String, Object>>(){}.getType();  
 
 Map<String, Object> newMap = gson.fromJson(jsonString, mapType);