依星源码资源网,依星资源网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 176|回复: 0

介绍几种Java中Object转JSONObject的方法

[复制链接] 主动推送

5449

主题

5496

帖子

6837

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6837
发表于 2024-1-10 13:58:52 | 显示全部楼层 |阅读模式
一、JSON库概述
在Java编程中,将Java Object类型数据转换成JSON数据格式的任务是很频繁的。为了实现这种转换,Java可以使用多种JSON库,如org.json、Gson、Jackson等。这些库主要分为两类:1)把Java数据转换到JSON格式;2)解析JSON数据格式。
二、使用org.json
org.json是一个小型的JSON解析器,可以非常方便地将Java对象转换为JSON对象。下面我们来介绍一些它的基本用法。

1.将Java Object转换成JSONObject
  1. JSONObject jsonObject = new JSONObject();
  2. jsonObject.put("name", "Tom");
  3. jsonObject.put("age", 22);
  4. jsonObject.put("gender", "male");
复制代码
上述代码将一个Java Object类型转换成了一个JSONObject对象。在这个JSON对象中,我们添加了三个键值对,用于展示JSONObject如何工作。在这个例子中,我们创建了一个JSON对象,然后使用put方法添加了三个键值对,分别表示“name”、“age”和“gender”这三个属性的值。

2.将Java数组转换成JSONArray
如果我们要将Java中的数组转换成JSONArray,可以使用如下代码
  1. JSONArray jsonArray = new JSONArray();
  2. String[] books = new String[]{"Java编程思想", "Effective Java"};
  3. for (String book : books) {
  4.   jsonArray.put(book);
  5. }
复制代码
在这个例子中,我们定义了一个字符串数组books,然后把它的每一个元素逐个添加到JSONArray对象中,最后实现了Java数组向JSONArray的转换。

3.将Java List转换成JSONArray
如果我们要将Java中的List转换成JSONArray,可以使用如下代码
  1. JSONArray jsonArray = new JSONArray();
  2. List list = new ArrayList<>();
  3. list.add("John");
  4. list.add("Mary");
  5. list.add("Tom");
  6. for (String s : list) {
  7.   jsonArray.put(s);
  8. }
复制代码
与将Java数组转换成JSONArray类似,我们可以逐个将List中的元素添加到JSONArray对象中来实现转换。JSONArray的put方法可以接受Java对象、JSON对象或JSON数组。因此,对于Java中的List、Set和数组类型来说,我们都可以使用这样的方式将它们转换为JSONArray对象。

三、使用Gson
与org.json相比,Gson更加强大、高效,具有更好的转换功能和更友好的编码方式。接下来我们来看一下Gson的用法。

1.将Java Object转换成JSON字符串
  1. User user = new User(101, "Tom", "tom@gmail.com");
  2. String json = new Gson().toJson(user);
复制代码
上述代码展示了如何实现Java Object类型到JSON字符串的转换。这里我们创建了一个User对象,然后使用Gson库的toJson方法将它转换为一个JSON字符串。我们可以通过调用User对象的getter方法或者反射来获取字段的值,这里就不再赘述。

2.将JSON字符串转换成Java Object
  1. String json = "{"id":101,"name":"Tom","email":"tom@gmail.com"}";
  2. User user = new Gson().fromJson(json, User.class);
复制代码
上述代码展示了如何实现JSON字符串到Java Object的转换。这里我们创建了一个JSON字符串,然后使用Gson库的fromJson方法将它转换为一个User对象。我们在fromJson方法中指定了目标类型的类名,Gson会根据源数据和目标类型类的信息转换成一个Java对象。如果目标类型是一个嵌套的Java对象,我们需要将该类型传递给Gson的fromJson()方法。

3.将Java Object转换成JSONObject
  1. User user = new User(101, "Tom", "tom@gmail.com");
  2. JsonObject jsonObject = new Gson().toJsonTree(user).getAsJsonObject();
复制代码
这个例子展示了如何使用Gson将Java Object转换成JSONObject。我们使用toJsonTree方法将User对象转换为JsonElement对象,然后使用getAsJsonObject方法将JsonElement转换成JsonObject对象。这样,我们就可以修改JsonObject对象中的属性,或者将它用于其它意图。

4.将Java数组或List转换成JSONArray
  1. List list = new ArrayList<>();
  2. list.add("John");
  3. list.add("Mary");
  4. list.add("Tom");
  5. JsonArray jsonArray = new Gson().toJsonTree(list).getAsJsonArray();
复制代码
这个例子展示了如何使用Gson将Java数组或List转换成JSONArray。我们使用toJsonTree方法将List对象转换为JsonElement对象,然后使用getAsJsonArray方法将JsonElement转换成JsonArray对象。

四、使用Jackson
Jackson是另一个流行的JSON库,它的API非常地丰富和强大。接下来我们来看一下Jackson的用法。

1.将Java Object转换成JSON字符串
  1. User user = new User(101, "Tom", "tom@gmail.com");
  2. String json = new ObjectMapper().writeValueAsString(user);
复制代码
这个例子展示了如何使用Jackson将Java Object转换成JSON字符串。我们使用ObjectMapper的writeValueAsString方法将Java对象转换为JSON字符串。

2.将JSON字符串转换成Java Object
  1. String json = "{"id":101,"name":"Tom","email":"tom@gmail.com"}";
  2. User user = new ObjectMapper().readValue(json, User.class);
复制代码
这个例子展示了如何使用Jackson将JSON字符串转换成Java Object。我们使用ObjectMapper的readValue方法将JSON字符串转换为Java对象。我们在readValue方法中指定了目标类型的类名,它会根据源数据和目标类型的信息来转换成一个Java对象。

3.将Java Object转换成JSONObject
  1. User user = new User(101, "Tom", "tom@gmail.com");
  2. ObjectNode objectNode = new ObjectMapper().valueToTree(user);
复制代码
这个例子展示了如何使用Jackson将Java Object转换成JSONObject。我们使用ObjectMapper的valueToTree方法将User对象转换为JsonNode对象,然后将它转换成ObjectNode对象。

4.将Java数组或List转换成JSONArray
  1. List list = new ArrayList<>();
  2. list.add("John");
  3. list.add("Mary");
  4. list.add("Tom");
  5. ArrayNode arrayNode = new ObjectMapper().valueToTree(list);
复制代码
这个例子展示了如何使用Jackson将Java数组或List转换成JSONArray。我们使用ObjectMapper的valueToTree方法将List对象转换为JsonNode对象,然后将它转换成ArrayNode对象。

扫码关注微信公众号,及时获取最新资源信息!下载附件优惠VIP会员5折;永久VIP免费
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明:
1、本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与商业和非法行为,请在24小时之内自行删除!
2、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,请勿任何商业目的与商业用途。
3、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
4、论坛的所有内容都不保证其准确性,完整性,有效性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
5、用户使用本网站必须遵守适用的法律法规,对于用户违法使用本站非法运营而引起的一切责任,由用户自行承担
6、本站所有资源来自互联网转载,版权归原著所有,用户访问和使用本站的条件是必须接受本站“免责声明”,如果不遵守,请勿访问或使用本网站
7、本站使用者因为违反本声明的规定而触犯中华人民共和国法律的,一切后果自己负责,本站不承担任何责任。
8、凡以任何方式登陆本网站或直接、间接使用本网站资料者,视为自愿接受本网站声明的约束。
9、本站以《2013 中华人民共和国计算机软件保护条例》第二章 “软件著作权” 第十七条为原则:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。若有学员需要商用本站资源,请务必联系版权方购买正版授权!
10、本网站如无意中侵犯了某个企业或个人的知识产权,请来信【站长信箱312337667@qq.com】告之,本站将立即删除。
郑重声明:
本站所有资源仅供用户本地电脑学习源代码的内含设计思想和原理,禁止任何其他用途!
本站所有资源、教程来自互联网转载,仅供学习交流,不得商业运营资源,不确保资源完整性,图片和资源仅供参考,不提供任何技术服务。
本站资源仅供本地编辑研究学习参考,禁止未经资源商正版授权参与任何商业行为,违法行为!如需商业请购买各资源商正版授权
本站仅收集资源,提供用户自学研究使用,本站不存在私自接受协助用户架设游戏或资源,非法运营资源行为。
 
在线客服
点击这里给我发消息 点击这里给我发消息 点击这里给我发消息
售前咨询热线
312337667

微信扫一扫,私享最新原创实用干货

QQ|免责声明|依星源码资源网 ( 鲁ICP备2021043233号-3 )|网站地图

GMT+8, 2024-4-28 01:02

Powered by Net188.com X3.4

邮箱:312337667@qq.com 客服QQ:312337667(工作时间:9:00~21:00)

快速回复 返回顶部 返回列表