JSONArray数据转换成java List

本文展示了如何使用Java将对象转换为JSON格式,并通过不同方法实现转换。包括使用JSON库进行对象到JSONArray的转换,以及利用JSON配置进行更灵活的对象转换。
package no.integrasco.ingentia.news.qaedition;

public class Person {

private String name;

private int age;

public String getName() {

return name;
}

public void setName(String name) {

this.name = name;
}

public int getAge() {

return age;
}

public void setAge(int age) {

this.age = age;
}
}



package no.integrasco.ingentia.news.qaedition;

import java.util.List;

import net.sf.json.JSONArray;
import net.sf.json.JsonConfig;

public class JsonTest {

/**
* @param args
*/
public static void main(String[] args) {

// 转换方法1
JSONArray array = JSONArray.fromObject("[{'name':'hehe','age':22}]");
List<Person> list = JSONArray.toList(array, Person.class);// 过时方法
System.out.println(list.get(0).getName());

// 转换方法2
List<?> list2 = JSONArray.toList(array, new Person(), new JsonConfig());//参数1为要转换的JSONArray数据,参数2为要转换的目标数据,即List盛装的数据
Person person = (Person) list2.get(0);
System.out.println(person.getAge());
}

}
Java中,将`JSONArray`转换为`List`通常需要使用第三方库,例如`org.json`(`org.json.JSONArray`)或`Gson`(`com.google.gson.JsonArray`)。以下是两种常见的方法: --- ### **方法1:使用 `org.json` 库** 如果使用的是 `org.json.JSONArray`,可以手动遍历 `JSONArray` 并将其转换为 `List`。 #### **示例代码** ```java import org.json.JSONArray; import java.util.ArrayList; import java.util.List; public class JsonArrayToList { public static void main(String[] args) { // 示例 JSON 数组字符串 String jsonArrayStr = "[1, 2, 3, \"four\", \"five\"]"; // 解析 JSON 数组 JSONArray jsonArray = new JSONArray(jsonArrayStr); // 转换为 List<Object> List<Object> list = new ArrayList<>(); for (int i = 0; i < jsonArray.length(); i++) { list.add(jsonArray.get(i)); } // 打印结果 System.out.println(list); // 输出: [1, 2, 3, "four", "five"] } } ``` #### **说明** - `JSONArray` 可以存储不同类型的数据(`Integer`、`String`、`Boolean` 等),因此转换为 `List<Object>`。 - 如果 JSON 数组中的元素都是特定类型(如 `String`),可以强制转换: ```java List<String> stringList = new ArrayList<>(); for (int i = 0; i < jsonArray.length(); i++) { stringList.add(jsonArray.getString(i)); // 假设所有元素都是 String } ``` --- ### **方法2:使用 `Gson` 库** `Gson` 是 Google 提供的 JSON 库,可以更方便地进行类型转换。 #### **示例代码** ```java import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; import java.util.List; public class JsonArrayToListWithGson { public static void main(String[] args) { // 示例 JSON 数组字符串 String jsonArrayStr = "[1, 2, 3, \"four\", \"five\"]"; // 使用 Gson 解析 Gson gson = new Gson(); Type listType = new TypeToken<List<Object>>() {}.getType(); List<Object> list = gson.fromJson(jsonArrayStr, listType); // 打印结果 System.out.println(list); // 输出: [1.0, 2.0, 3.0, "four", "five"] } } ``` #### **说明** - `Gson` 会自动将 JSON 数字解析为 `Double`,因此 `1` 会变 `1.0`。 - 如果希望保留原始类型,可以使用 `TypeToken` 指定更精确的类型,例如 `List<String>` 或自定义对象。 --- ### **方法3:使用 `Jackson` 库** `Jackson` 是另一个流行的 JSON 库,支持更复杂的类型转换。 #### **示例代码** ```java import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import java.util.List; public class JsonArrayToListWithJackson { public static void main(String[] args) throws Exception { // 示例 JSON 数组字符串 String jsonArrayStr = "[1, 2, 3, \"four\", \"five\"]"; // 使用 Jackson 解析 ObjectMapper objectMapper = new ObjectMapper(); List<Object> list = objectMapper.readValue(jsonArrayStr, new TypeReference<List<Object>>() {}); // 打印结果 System.out.println(list); // 输出: [1, 2, 3, "four", "five"] } } ``` #### **说明** - `Jackson` 默认保留 JSON 数据的原始类型(如 `Integer` 而不是 `Double`)。 - 适用于更复杂的 JSON 结构(如嵌套对象)。 --- ### **总结** | 方法 | 适用库 | 特点 | |------|--------|------| | `org.json` | `org.json.JSONArray` | 手动遍历,简单直接 | | `Gson` | `com.google.gson` | 自动解析,但数字默认转为 `Double` | | `Jackson` | `com.fasterxml.jackson` | 类型安全,支持复杂结构 | --- ### **常见问题** 1. **如果 `JSONArray` 包含嵌套对象,如何转换为 `List<Map>`?** - 使用 `Gson` 或 `Jackson` 直接解析为 `List<Map<String, Object>>`。 2. **`org.json.JSONArray` 和 `com.google.gson.JsonArray` 有什么区别?** - 前者是 `org.json` 库的类,后者是 `Gson` 的类,API 不同但功能类似。 3. **如何处理 JSON 数组中的 `null` 值?** - 在 `Gson` 或 `Jackson` 中,`null` 会被正确解析为 Java 的 `null`。 4. **如果 JSON 数组很大,如何优化性能?** - 使用流式解析(如 `Jackson` 的 `JsonParser`)。 5. **如何将 `List` 转换回 `JSONArray`?** - 使用 `new JSONArray(list)`(`org.json`)或 `gson.toJson(list)`(`Gson`)。 --- ### **最终推荐** - **简单场景** → `org.json`(轻量级) - **复杂类型转换** → `Gson` 或 `Jackson`(更强大) 希望这些方法能帮助你完 `JSONArray` 到 `List` 的转换! 🚀
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值