JSONObject与JSONArray的使用
2025-04-25 23:22
Java
102
0
0
0
标题录入
封面图
在Java中,`JSONObject` 和 `JSONArray` 是处理JSON数据的常用工具类。它们通常来自 `org.json` 包,用于解析和生成JSON格式的数据。以下是它们的基本用法: ### 1. 添加依赖 如果你使用的是Maven项目,可以在 `pom.xml` 中添加以下依赖: ```xml <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20210307</version> </dependency> ``` 或者手动下载 `json-20210307.jar` 文件并将其添加到项目的类路径中。 --- ### 2. 使用 `JSONObject` #### 2.1 创建 JSONObject `JSONObject` 用于表示一个JSON对象(即键值对结构)。 ```java import org.json.JSONObject; public class Main { public static void main(String[] args) { // 创建一个空的JSONObject JSONObject jsonObject = new JSONObject(); // 向JSONObject中添加键值对 jsonObject.put("name", "Alice"); jsonObject.put("age", 25); jsonObject.put("isStudent", false); // 打印JSONObject System.out.println(jsonObject.toString()); } } ``` 输出结果: ```json {"name":"Alice","age":25,"isStudent":false} ``` #### 2.2 从字符串解析 JSONObject 可以通过字符串解析 JSON 数据为 `JSONObject`。 ```java import org.json.JSONObject; public class Main { public static void main(String[] args) { String jsonString = "{\"name\":\"Bob\",\"age\":30,\"isStudent\":true}"; // 将字符串解析为JSONObject JSONObject jsonObject = new JSONObject(jsonString); // 获取值 String name = jsonObject.getString("name"); int age = jsonObject.getInt("age"); boolean isStudent = jsonObject.getBoolean("isStudent"); System.out.println("Name: " + name); System.out.println("Age: " + age); System.out.println("Is Student: " + isStudent); } } ``` 输出结果: ``` Name: Bob Age: 30 Is Student: true ``` --- ### 3. 使用 `JSONArray` #### 3.1 创建 JSONArray `JSONArray` 用于表示一个JSON数组(即有序的值集合)。 ```java import org.json.JSONArray; import org.json.JSONObject; public class Main { public static void main(String[] args) { // 创建一个空的JSONArray JSONArray jsonArray = new JSONArray(); // 向JSONArray中添加元素 jsonArray.put("apple"); jsonArray.put(42); jsonArray.put(true); // 打印JSONArray System.out.println(jsonArray.toString()); } } ``` 输出结果: ```json ["apple",42,true] ``` #### 3.2 从字符串解析 JSONArray 可以通过字符串解析 JSON 数据为 `JSONArray`。 ```java import org.json.JSONArray; public class Main { public static void main(String[] args) { String jsonString = "[\"orange\",35,false]"; // 将字符串解析为JSONArray JSONArray jsonArray = new JSONArray(jsonString); // 获取数组中的元素 String fruit = jsonArray.getString(0); int number = jsonArray.getInt(1); boolean flag = jsonArray.getBoolean(2); System.out.println("Fruit: " + fruit); System.out.println("Number: " + number); System.out.println("Flag: " + flag); } } ``` 输出结果: ``` Fruit: orange Number: 35 Flag: false ``` --- ### 4. 结合使用 JSONObject 和 JSONArray #### 4.1 在 JSONObject 中嵌套 JSONArray ```java import org.json.JSONArray; import org.json.JSONObject; public class Main { public static void main(String[] args) { // 创建一个JSONObject JSONObject jsonObject = new JSONObject(); // 向JSONObject中添加键值对 jsonObject.put("name", "John"); jsonObject.put("age", 28); // 创建一个JSONArray作为值 JSONArray hobbies = new JSONArray(); hobbies.put("reading"); hobbies.put("swimming"); // 将JSONArray添加到JSONObject中 jsonObject.put("hobbies", hobbies); // 打印JSONObject System.out.println(jsonObject.toString()); } } ``` 输出结果: ```json {"name":"John","age":28,"hobbies":["reading","swimming"]} ``` #### 4.2 在 JSONArray 中嵌套 JSONObject ```java import org.json.JSONArray; import org.json.JSONObject; public class Main { public static void main(String[] args) { // 创建一个JSONArray JSONArray jsonArray = new JSONArray(); // 创建多个JSONObject并添加到JSONArray中 JSONObject person1 = new JSONObject(); person1.put("name", "Alice"); person1.put("age", 25); jsonArray.put(person1); JSONObject person2 = new JSONObject(); person2.put("name", "Bob"); person2.put("age", 30); jsonArray.put(person2); // 打印JSONArray System.out.println(jsonArray.toString()); } } ``` 输出结果: ```json [{"name":"Alice","age":25},{"name":"Bob","age":30}] ``` --- ### 总结 - `JSONObject`:用于表示键值对结构。 - `JSONArray`:用于表示有序的值集合。 - 可以在 `JSONObject` 中嵌套 `JSONArray`,也可以在 `JSONArray` 中嵌套 `JSONObject`。 - 解析时可以使用 `.getString()`、`.getInt()` 等方法获取不同类型的数据。 这些工具类非常适合快速处理简单的JSON数据。如果需要更复杂的JSON操作,可以考虑使用第三方库如 Jackson 或 Gson。
上一篇:
java 数字转换成字符串
下一篇:
AsyncTask的参数介绍
标题录入,一次不能超过6条
炒股技巧
T:0.007450s,M:251.23 KB
返回顶部
留言
留言
评论