Java解析JSON对象与数组示例

4星 · 超过85%的资源 需积分: 13 13 下载量 14 浏览量 更新于2024-09-15 收藏 2KB TXT 举报
本文将介绍Java中解析JSON的两种常见方法,通过`org.json`库和Google的Gson库来处理JSON数据。 首先,我们来看使用`org.json`库解析JSON的方法。`org.json`库提供了`JSONObject`和`JSONArray`类来处理JSON对象和数组。在给定的例子中,我们有一个包含学生信息的JSON字符串: ```java String strJson = "{\"students\":[{\"name\":\"Jack\",\"age\":12},{\"name\":\"Vista\",\"age\":23},{\"name\":\"Kaka\",\"age\":22},{\"name\":\"Hony\",\"age\":31}]}"; ``` 我们可以通过以下步骤解析这个JSON字符串: 1. 创建一个`JSONObject`实例,传入JSON字符串。 2. 使用`get`方法获取名为“students”的`JSONArray`。 3. 遍历`JSONArray`,对每个`JSONObject`进行操作,获取“name”和“age”字段的值。 ```java try { JSONObject jo = new JSONObject(strJson); JSONArray jsonArray = (JSONArray) jo.get("students"); for (int i = 0; i < jsonArray.length(); ++i) { JSONObject o = (JSONObject) jsonArray.get(i); System.out.println("name:" + o.getString("name") + "," + "age:" + o.getInt("age")); } } catch (JSONException e) { e.printStackTrace(); } ``` 接下来,我们看看如何使用Google的Gson库来解析JSON。Gson库提供了一个更简洁、更直观的方式来解析JSON数据。在下面的例子中,我们将使用`JsonReader`来读取JSON: ```java String string = "{\"class\":1,\"students\":[{\"name\":\"jack\",\"age\":21},{\"name\":\"kaka\",\"age\":21},{\"name\":\"lucy\",\"age\":21}]}"; StringReader sr = new StringReader(string); JsonReader jr = new JsonReader(sr); ``` 使用`JsonReader`解析JSON的过程如下: 1. 创建一个`StringReader`实例,传入JSON字符串。 2. 创建`JsonReader`实例,传入`StringReader`。 3. 使用`beginObject`开始读取JSON对象,然后逐个检查键名并处理对应的值。 ```java jr.beginObject(); if (jr.nextName().equals("class")) { System.out.println("班级:" + jr.nextString()); if (jr.nextName().equals("students")) { jr.beginArray(); while (jr.hasNext()) { jr.beginObject(); if (jr.nextName().equals("name")) System.out.print(jr.nextString()); if (jr.nextName().equals("age")) { System.out.println(", 年龄:" + jr.nextInt()); } jr.endObject(); } jr.endArray(); } } jr.endObject(); ``` 以上是使用`org.json`库和Gson库解析JSON的两种方法。`org.json`库适用于简单的JSON解析,而Gson库则提供更强大的功能,包括自动映射到Java对象,适合处理复杂的JSON结构。在实际开发中,根据项目需求和团队习惯,可以选择适合的库进行JSON解析。