Java JSON字符串与对象转换实战

版权申诉
7 下载量 139 浏览量 更新于2024-09-11 收藏 70KB PDF 举报
"Java中JSON字符串与java对象的互换实例详解" 在Java开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其简洁高效的特点,常用于前后端数据传输。JSON有两种基本格式:对象格式和数组对象格式。对象格式以大括号{}包裹键值对,数组对象格式则在对象格式基础上添加方括号[]。例如: 1. 对象格式: ```json { "name": "JSON", "address": "北京市西城区", "age": 25 } ``` 2. 数组对象格式: ```json [ { "name": "JSON", "address": "北京市西城区", "age": 25 } ] ``` 在JavaScript中,可以使用`JSON.parse()`方法将JSON字符串转换为JavaScript对象,便于操作和处理。 在Java中,为了实现JSON字符串与Java对象之间的转换,通常需要依赖第三方库,如json-lib。json-lib需要依赖五个其他库:commons-beanutils-1.8.0.jar、commons-collections-3.2.1.jar、commons-lang-2.5.jar、commons-logging-1.1.1.jar以及ezmorph-1.0.6.jar。 json-lib提供了`JSONObject`和`JSONArray`两个类,分别用于处理对象格式和数组对象格式的JSON数据。 一、Java普通对象到JSON字符串的转换 要将Java对象转换为JSON字符串,可以使用`JSONObject`类的`fromObject()`方法。例如,有一个名为`Person`的Java类,包含`name`、`address`和`age`字段,可以这样做: ```java import net.sf.json.JSONObject; public class Person { private String name; private String address; private int age; // getters and setters... public static void main(String[] args) { Person person = new Person(); person.setName("JSON"); person.setAddress("北京市西城区"); person.setAge(25); JSONObject json = JSONObject.fromObject(person); String jsonString = json.toString(); System.out.println(jsonString); } } ``` 二、JSON字符串到Java对象的转换 反之,若要将JSON字符串转换回Java对象,可以使用`JSONObject`的`toBean()`方法。假设我们已经有了一个JSON字符串,可以这样反序列化: ```java String jsonString = "{\"name\":\"JSON\",\"address\":\"北京市西城区\",\"age\":25}"; Person person = (Person) JSONObject.toBean(JSONObject.fromObject(jsonString), Person.class); ``` 这里需要注意的是,`toBean()`方法要求目标Java类具有对应的属性和getter/setter方法。 三、Java集合到JSON数组对象的转换 对于Java集合(如List、Set)转换为JSON数组对象,可以使用`JSONArray`类: ```java List<Person> peopleList = new ArrayList<>(); // 添加Person对象到peopleList... JSONArray jsonArray = JSONArray.fromObject(peopleList); String jsonArrayString = jsonArray.toString(); ``` 四、JSON数组对象到Java集合的转换 同样,可以将JSON数组对象转换回Java集合: ```java String jsonArrayString = "[{\"name\":\"JSON1\",\"address\":\"City1\",\"age\":30},{\"name\":\"JSON2\",\"address\":\"City2\",\"age\":35}]"; List<Person> peopleList = (List<Person>) JSONArray.toList(JSONArray.fromObject(jsonArrayString), Person.class); ``` 通过以上方式,Java开发者能够方便地在JSON字符串和Java对象之间进行互换,从而在前后端数据交换中实现灵活的数据处理。