java中JSONArray互相转换List的实现

Java中JSONArray和List的互相转换,可以使用JSON库中的方法来实现。下面我将详细讲解该转换的完整攻略,并提供两个示例。

JSONArray转List

1. 使用GSON库

  1. 首先需要引入GSON库的依赖,可以在maven中添加以下依赖:

xml
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>

  1. 将JSONArray转换为List,可以通过以下方式实现:

```java
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

JSONArray jsonArray = new JSONArray("[{\"id\":1, \"name\":\"Tom\"},{\"id\":2, \"name\":\"Jerry\"}]");
Type type = new TypeToken>>(){}.getType();
List> list = new Gson().fromJson(jsonArray.toString(), type);
```

上述代码中,首先将JSONArray对象转换为字符串类型,然后使用GSON的TypeToken来获取List的类型,将Json字符串转换为List。

2. 使用Java8 Stream API

如果项目使用的是Java8及以上版本,可以使用Stream API来进行JSONArray和List的转换。

JSONArray jsonArray = new JSONArray("[{\"id\":1, \"name\":\"Tom\"},{\"id\":2, \"name\":\"Jerry\"}]");

List<Map<String, Object>> list = IntStream.range(0, jsonArray.length())
        .mapToObj(index -> jsonArray.getJSONObject(index))
        .collect(Collectors.toList());

上述代码中,使用IntStream.range()方法来生成一组有序的数字,遍历JSONArray中的元素,使用mapToObj()方法将JSONObject对象转换为Map,最后使用Collectors.toList()方法将遍历结果收集到List中。

List转JSONArray

1. 使用GSON库

import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;

List<Map<String, Object>> list = new ArrayList<>();
Map<String, Object> map1 = new HashMap<>();
map1.put("id", 1);
map1.put("name", "Tom");
list.add(map1);
Map<String, Object> map2 = new HashMap<>();
map2.put("id", 2);
map2.put("name", "Jerry");
list.add(map2);

JsonElement jsonElement = new Gson().toJsonTree(list, new TypeToken<List<Map<String, Object>>>() {}.getType());

if (jsonElement.isJsonArray()) {
    JsonArray jsonArray = jsonElement.getAsJsonArray();
    for (JsonElement element : jsonArray) {
        JsonObject jsonObject = element.getAsJsonObject();
        int id = jsonObject.get("id").getAsInt();
        String name = jsonObject.get("name").getAsString();
        // do something
    }
}

上述代码中,首先创建一个List>,然后使用GSON库的toJsonTree()方法将List转换为JsonElement对象,最后将JsonElement转换为JsonArray对象,并遍历JsonArray中的元素获取数据。

2. 使用Java8 Stream API

使用Stream API将List转换为JSONArray,只需要将List中的元素一个一个转换为JSONObject对象,然后将所有JSONObject对象添加到JSONArray中即可。

List<Map<String, Object>> list = new ArrayList<>();
Map<String, Object> map1 = new HashMap<>();
map1.put("id", 1);
map1.put("name", "Tom");
list.add(map1);
Map<String, Object> map2 = new HashMap<>();
map2.put("id", 2);
map2.put("name", "Jerry");
list.add(map2);

JSONArray jsonArray = new JSONArray();
list.stream()
    .map(map -> new JSONObject(map))
    .forEach(json -> jsonArray.put(json));

上述代码中,使用Stream API遍历List中的元素,将每个Map对象转换为JSONObject对象,然后将所有JSONObject对象添加到JSONArray中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java中JSONArray互相转换List的实现 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • spring boot 注入 property的三种方式(推荐)

    在Spring Boot应用程序中,我们可以使用application.properties或application.yml文件来配置应用程序的属性。这些属性可以通过三种方式注入到Spring Bean中。下面是详解Spring Boot注入property的三种方式的完整攻略: 使用@Value注解 @Value注解是Spring框架提供的一种注入属性的方…

    Java 2023年5月14日
    00
  • 页面向下滚动ajax获取数据的实现方法(兼容手机)

    实现页面向下滚动 AJAX 获取数据的方法,常用于网站无限滚动加载更多内容的功能实现。下面是实现此功能的完整攻略: 技术选型 实现页面向下滚动 AJAX 获取数据,需要使用前端技术和后端技术协同完成。前端技术主要使用 JavaScript 和 jQuery,后端技术可以选择 PHP、Java、Python等。 实现步骤 确定页面上需要进行下拉刷新的区域,一般…

    Java 2023年6月16日
    00
  • java获取当前日期和时间的二种方法分享

    当我们在Java程序中需要获取当前日期和时间时,通常可以使用下面两种常见的方式: 一、使用Java Date类(已过时) Java中的Date类已经被微软官方宣布过时了,不建议使用。不过,这里还是提供一下使用Date类获取当前日期和时间的方式: import java.util.Date; public class GetDateTimeExample { …

    Java 2023年5月20日
    00
  • mybatis自动生成@Table、@Column、@Id注解的方法

    完整攻略如下: 环境搭建 在项目中引入 MyBatis Generator 库,官方文档地址:http://www.mybatis.org/generator/index.html 编写配置文件 在项目中编写 MyBatis Generator 配置文件,文件中需要配置数据源及生成代码的相关实体类信息,示例配置文件如下: <?xml version=&…

    Java 2023年5月20日
    00
  • Logger.error打印错误异常的详细堆栈信息

    Logger是一种Java日志框架,用于在Java应用程序中记录和输出各种事件的消息。Logger.error()方法是Logger框架中的一个方法,通常用于记录和输出错误和异常的详细信息。 要打印错误异常的详细堆栈信息,可以使用Logger.error()方法并将异常作为参数。下面是使用Logger.error()方法打印异常堆栈信息的完整攻略: 导入相关…

    Java 2023年5月27日
    00
  • 详解 maven的pom.xml用解决版本问题

    下面就是关于“详解 Maven 的 pom.xml 用 解决版本问题”的完整攻略。 概述 当在Maven项目中出现依赖jar包与自己项目中的相关版本不兼容时,可以通过在pom.xml文件中使用<exclusion>标签来排除掉该依赖中不兼容的包,保证项目的正常运行。 详解步骤 接下来详细介绍如何使用<exclusion>标签解决版本问…

    Java 2023年6月2日
    00
  • Java Apache Commons报错“ZipOverflowException”的原因与解决方法

    “ZipOverflowException”是Java的Apache Commons类库中的一个异常,通常由以下原因之一引起: 压缩文件过大:如果压缩文件过大,则可能会出现此异常。例如,可能会尝试压缩一个超过2GB的文件。 压缩文件格式错误:如果压缩文件格式错误,则可能会出现此异常。例如,可能会使用错误的压缩文件格式或压缩文件包含非法字符。 以下是两个实例:…

    Java 2023年5月5日
    00
  • 浅析jQuery Ajax通用js封装

    我将为您详细讲解“浅析jQuery Ajax通用js封装”的完整攻略: 1. 什么是jQuery Ajax通用js封装 jQuery Ajax通用js封装是一种在Javascript中使用jQuery库对Ajax进行封装的方法。通过对Ajax通用操作的封装,可以实现代码的重用,减少代码冗余,提高代码的可维护性。 2. jQuery Ajax通用js封装要点 …

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部