Java解析JSON对象与数组示例
4星 · 超过85%的资源 需积分: 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解析。
2021-01-03 上传
207 浏览量
2014-11-25 上传
2015-08-07 上传
2013-03-13 上传
hou649726274
- 粉丝: 1
- 资源: 7
最新资源
- 构建基于Django和Stripe的SaaS应用教程
- Symfony2框架打造的RESTful问答系统icare-server
- 蓝桥杯Python试题解析与答案题库
- Go语言实现NWA到WAV文件格式转换工具
- 基于Django的医患管理系统应用
- Jenkins工作流插件开发指南:支持Workflow Python模块
- Java红酒网站项目源码解析与系统开源介绍
- Underworld Exporter资产定义文件详解
- Java版Crash Bandicoot资源库:逆向工程与源码分享
- Spring Boot Starter 自动IP计数功能实现指南
- 我的世界牛顿物理学模组深入解析
- STM32单片机工程创建详解与模板应用
- GDG堪萨斯城代码实验室:离子与火力基地示例应用
- Android Capstone项目:实现Potlatch服务器与OAuth2.0认证
- Cbit类:简化计算封装与异步任务处理
- Java8兼容的FullContact API Java客户端库介绍