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日

相关文章

  • Java构建乘积数组的方法

    Java构建乘积数组的方法可以通过使用常规的算法实现。假设给定一个长度为n的整数数组,要求构建一个长度为n的数组,其中的每个元素都是原始数组中除该元素外所有元素的乘积。实现这个算法的时候,可以按照以下步骤进行: 创建两个辅助数组leftProduct和rightProduct,它们的长度都是n。 对leftProduct数组进行初始化,使得leftProdu…

    Java 2023年5月26日
    00
  • JavaScript学习笔记整理_setTimeout的应用

    首先让我们来详细讲解“JavaScript学习笔记整理_setTimeout的应用”这个主题的完整攻略。 简介 setTimeout() 是 JavaScript 的一个函数,它可以在一定时间后执行指定的函数或代码。通过 setTimeout() 函数,我们可以实现倒计时、延迟显示等功能。 语法 setTimeout() 函数的语法如下: setTimeou…

    Java 2023年6月15日
    00
  • JS中表单的使用小结

    JS中表单的使用小结 在前端开发中,表单是不可避免的一个环节。HTML和CSS提供了表单的基本结构和样式,而JS可以用来处理表单中的数据和提交操作。在本文章中,将对JS中表单的使用做一个小结,并分享一些示例代码。 表单的基本结构 表单的基本结构包括form、input等元素,如下所示: <form> <label> 用户名:<i…

    Java 2023年5月26日
    00
  • springboot 自定义启动器的实现

    下面是关于“springboot 自定义启动器的实现”的攻略,包含两个示例: 一、为什么要自定义启动器 Spring Boot是一款非常流行的Java Web框架,它极大地提高了我们的开发效率。而自定义启动器则是在Spring Boot框架下进行自定义的一种方式。通常情况下,我们会将一系列相关的模块封装进一个自定义的启动器中,以便于其他项目能够更加方便的使用…

    Java 2023年5月19日
    00
  • JavaScript反射与依赖注入实例详解

    JavaScript 反射与依赖注入实例详解 JavaScript 反射和依赖注入是现代 web 应用程序发展中的两个重要的技术,本文将深入讨论这两个概念,并提供一些具体的实例和攻略。 什么是 JavaScript 反射? JavaScript 反射是一种技术,它可以在运行时检查一个对象的属性和方法,并对其进行操作。这通常用于创建更动态和灵活的应用程序。 如…

    Java 2023年5月26日
    00
  • Python教程之基本运算符的使用(下)

    那么我就来详细讲解一下 “Python教程之基本运算符的使用(下)” 的攻略,同时配上两条示例说明。 前言 在 Python 的基础教程中,我们已经了解了 Python 基础运算符的使用(加、减、乘、除、取余等)。本文将补充一些更加高级的运算符的使用方法。 Python 基本运算符的使用(下) 1. 逻辑运算符 与、或和非是三种常见的逻辑运算符,它们经常用于…

    Java 2023年5月26日
    00
  • Java基础教程之整数运算

    Java基础教程之整数运算攻略 Java是一种强类型语言,其中包含了整数类型及其运算操作。本文将详细讲解Java基础教程中的整数运算,包括基本概念、运算规则和示例说明。 基本概念 Java中的整数类型主要有四种:byte、short、int和long,对应的存储空间分别为1、2、4和8个字节。整数运算包括加、减、乘、除和取模等操作。 运算规则 Java中的整…

    Java 2023年5月26日
    00
  • Sprint Boot @Transactional使用方法详解

    在Spring Boot中,@Transactional注解用于管理事务。使用@Transactional注解可以确保在方法执行期间,如果发生异常或错误,所有对数据库的更改都将回滚。本文将详细介绍@Transactional注解的作用和使用方法,并提供两个示例说明。 @Transactional注解的作用 在Spring Boot中,@Transaction…

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