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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

限时开通VIP永久会员,可免费下载所有附件
查看: 62|回复: 0

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

[复制链接] |主动推送

1686

主题

1721

帖子

2378

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2378
发表于 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对象。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明:
1、转载或引用本网站内容须注明原网址,并标明本网站网址“源码资源网”
2、转载或引用本网站中的署名文章,请按规定向原作者支付稿酬
3、对于不当转载或引用本网站内容而引起的民事纷争、行政处理或其他损失,本网站不承担责任
4、对不遵守本声明或其他违法、恶意使用本网站内容者,本网站保留追究其法律责任的权利
5、资源部分来自网络,不保证资源的完整性,仅供学习研究,如需运营请购买正版,如有侵权请联系客服删除
6、本站所有资源不带技术支持,下载资源请24小时内删除,如用于违法用途,或者商业用途,一律用于者承担
 
在线客服
点击这里给我发消息 点击这里给我发消息 点击这里给我发消息
售前咨询热线
312337667

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

QQ|手机版|依星源码资源网 ( 鲁ICP备2021043233号-3 )|网站地图

GMT+8, 2024-2-23 06:22

Powered by Net188.com X3.4

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

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