Java解析JSON对象与数组示例
4星 · 超过85%的资源 需积分: 13 166 浏览量
更新于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解析。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2020-10-16 上传
207 浏览量
2013-03-13 上传
2015-08-07 上传
2014-11-25 上传
hou649726274
- 粉丝: 1
- 资源: 7
最新资源
- 正整数数组验证库:确保值符合正整数规则
- 系统移植工具集:镜像、工具链及其他必备软件包
- 掌握JavaScript加密技术:客户端加密核心要点
- AWS环境下Java应用的构建与优化指南
- Grav插件动态调整上传图像大小提高性能
- InversifyJS示例应用:演示OOP与依赖注入
- Laravel与Workerman构建PHP WebSocket即时通讯解决方案
- 前端开发利器:SPRjs快速粘合JavaScript文件脚本
- Windows平台RNNoise演示及编译方法说明
- GitHub Action实现站点自动化部署到网格环境
- Delphi实现磁盘容量检测与柱状图展示
- 亲测可用的简易微信抽奖小程序源码分享
- 如何利用JD抢单助手提升秒杀成功率
- 快速部署WordPress:使用Docker和generator-docker-wordpress
- 探索多功能计算器:日志记录与数据转换能力
- WearableSensing: 使用Java连接Zephyr Bioharness数据到服务器