Java中Array/List/Map/Object与JSON互相转换详解(转载)
在Java中,我们常常需要进行各种类型之间的相互转换,最常见的就是把Java中的数据结构与JSON格式进行相互转换。为此,我们需要借助一些工具类库来完成,这篇文章就将详细讲解如何使用这些工具类库进行相应的转换操作。
使用Jackson库进行转换
在Java中,最常用的处理JSON操作的库之一就是Jackson。Jackson是一个开源的、高性能的Java JSON处理库,它支持将Java对象和JSON数据之间进行转换,而且功能非常强大。
将Java对象转换为JSON字符串
让我们首先看一下如何将一个Java对象转换成JSON字符串。假设我们有一个Java对象Person
,它包含name
、address
、age
三个属性。
public class Person {
private String name;
private String address;
private int age;
// 构造函数、getters和setters等略
}
我们可以使用以下代码将这个Java对象转换成一个JSON字符串:
ObjectMapper mapper = new ObjectMapper();
Person person = new Person("Tom", "Beijing", 20);
String json = mapper.writeValueAsString(person);
将JSON字符串转换为Java对象
接下来,我们看一下如何将一个JSON字符串转换成Java对象。使用以下代码将JSON字符串转换为Person
对象:
String jsonInput = "{\"name\":\"Tom\",\"address\":\"Beijing\",\"age\":20}";
Person person = mapper.readValue(jsonInput, Person.class);
将List转换为JSON字符串
现在我们有一个包含几个Person
对象的List
对象,如何将它转换成JSON字符串呢?
List<Person> personList = new ArrayList<>();
personList.add(new Person("Tom", "Beijing", 20));
personList.add(new Person("Tim", "Shanghai", 30));
personList.add(new Person("Mary", "Guangzhou", 25));
String json = mapper.writeValueAsString(personList);
将JSON字符串转换为List
现在我们有一个包含多个Person
对象的JSON格式的字符串,如何将它转换成Java中的List
对象呢?
String jsonInput = "[{\"name\":\"Tom\",\"address\":\"Beijing\",\"age\":20},{\"name\":\"Tim\",\"address\":\"Shanghai\",\"age\":30},{\"name\":\"Mary\",\"address\":\"Guangzhou\",\"age\":25}]";
List<Person> personList = mapper.readValue(jsonInput, new TypeReference<List<Person>>(){});
将Map转换为JSON字符串
我们也可以将Map对象转换为JSON格式的字符串。使用以下代码将Java中的Map
对象转换为JSON字符串:
Map<String, Integer> map = new HashMap<>();
map.put("Tom", 20);
map.put("Tim", 30);
map.put("Mary", 25);
String json = mapper.writeValueAsString(map);
将JSON字符串转换为Map
当然,我们还可以将JSON字符串转换为Java中的Map
对象。使用以下代码将JSON字符串转换为Map对象:
String jsonInput = "{\"Tom\":20,\"Tim\":30,\"Mary\":25}";
Map<String, Integer> map = mapper.readValue(jsonInput, new TypeReference<Map<String, Integer>>(){});
在Java对象中使用@JsonFormat注解
Jackson库还提供了一个@JsonFormat
注解,它可以用来配置对象中Date类型的属性的序列化和反序列化方式。例如,我们有一个Person
对象,它包含一个birthdate
的属性,我们希望将这个日期属性使用特定的格式进行序列化和反序列化。使用以下代码可以实现这个需求:
public class Person {
private String name;
private String address;
private int age;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
private Date birthdate;
// 构造函数、getters和setters等略
}
使用Gson库进行转换
还有另一个流行的JSON库,那就是Google的Gson,它也可以很方便地进行Java中数据结构与JSON格式之间的转换。
将Java对象转换为JSON字符串
使用以下代码将Java对象转换成JSON字符串:
Gson gson = new Gson();
Person person = new Person("Tom", "Beijing", 20);
String json = gson.toJson(person);
将JSON字符串转换为Java对象
使用以下代码将JSON字符串转换为Java对象:
String jsonInput = "{\"name\":\"Tom\",\"address\":\"Beijing\",\"age\":20}";
Person person = gson.fromJson(jsonInput, Person.class);
将List转换为JSON字符串
使用以下代码将Java中的List
对象转换为JSON字符串:
List<Person> personList = new ArrayList<>();
personList.add(new Person("Tom", "Beijing", 20));
personList.add(new Person("Tim", "Shanghai", 30));
personList.add(new Person("Mary", "Guangzhou", 25));
String json = gson.toJson(personList);
将JSON字符串转换为List
使用以下代码将JSON字符串转换为Java中的List
对象:
String jsonInput = "[{\"name\":\"Tom\",\"address\":\"Beijing\",\"age\":20},{\"name\":\"Tim\",\"address\":\"Shanghai\",\"age\":30},{\"name\":\"Mary\",\"address\":\"Guangzhou\",\"age\":25}]";
List<Person> personList = gson.fromJson(jsonInput, new TypeToken<List<Person>>(){}.getType());
将Map转换为JSON字符串
使用以下代码将Java中的Map
对象转换为JSON字符串:
Map<String, Integer> map = new HashMap<>();
map.put("Tom", 20);
map.put("Tim", 30);
map.put("Mary", 25);
String json = gson.toJson(map);
将JSON字符串转换为Map
使用以下代码将JSON字符串转换为Java中的Map
对象:
String jsonInput = "{\"Tom\":20,\"Tim\":30,\"Mary\":25}";
Type typeOfMap = new TypeToken<Map<String, Integer>>(){}.getType();
Map<String, Integer> map = gson.fromJson(jsonInput, typeOfMap);
使用FastJson库进行转换
最后,让我们来看一下FastJson库,它是阿里巴巴开源的JSON库,它的优点在于能够快速、灵活地执行JSON与Java中数据结构之间的转换。
将Java对象转换为JSON字符串
使用以下代码将Java对象转换为JSON字符串:
Person person = new Person("Tom", "Beijing", 20);
String json = JSON.toJSONString(person);
将JSON字符串转换为Java对象
使用以下代码将JSON字符串转换为Java对象:
String jsonInput = "{\"name\":\"Tom\",\"address\":\"Beijing\",\"age\":20}";
Person person = JSON.parseObject(jsonInput, Person.class);
将List转换为JSON字符串
使用以下代码将Java中的List
对象转换为JSON字符串:
List<Person> personList = new ArrayList<>();
personList.add(new Person("Tom", "Beijing", 20));
personList.add(new Person("Tim", "Shanghai", 30));
personList.add(new Person("Mary", "Guangzhou", 25));
String json = JSON.toJSONString(personList);
将JSON字符串转换为List
使用以下代码将JSON字符串转换为Java中的List
对象:
String jsonInput = "[{\"name\":\"Tom\",\"address\":\"Beijing\",\"age\":20},{\"name\":\"Tim\",\"address\":\"Shanghai\",\"age\":30},{\"name\":\"Mary\",\"address\":\"Guangzhou\",\"age\":25}]";
List<Person> personList = JSON.parseObject(jsonInput, new TypeReference<List<Person>>() {});
将Map转换为JSON字符串
使用以下代码将Java中的Map
对象转换为JSON字符串:
Map<String, Integer> map = new HashMap<>();
map.put("Tom", 20);
map.put("Tim", 30);
map.put("Mary", 25);
String json = JSON.toJSONString(map);
将JSON字符串转换为Map
使用以下代码将JSON字符串转换为Java中的Map
对象:
String jsonInput = "{\"Tom\":20,\"Tim\":30,\"Mary\":25}";
Map<String, Integer> map = JSON.parseObject(jsonInput, new TypeReference<Map<String, Integer>>() {});
总结
本文详细介绍了Java中如何使用Jackson、Gson、FastJson库进行JSON与Java数据结构之间的转换。Jackson是一个功能非常强大的JSON库,Gson是Google开源的JSON库,FastJson是阿里巴巴开源的JSON库。它们都提供了丰富的API接口,可以满足各种不同的需求。通过学习本文,您可以熟练地使用这些库进行JSON与Java数据结构之间的转换操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java中array/list/map/object与json互相转换详解(转载) - Python技术站