fastjson下 Java 集合和 JSONArray 的相互转换

本文介绍如何使用fastjson库将Java集合转换为JSONArray,并反之进行转换。示例包括将List转换为JSON数组的表达式以及反向转换的具体步骤。
fastjson下 Java 集合和 JSONArray 的相互转换
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.happok.education.prepare_lessons.controller.vo.PrepareTemplateVO;

/**
 * @author ccyang
 */
public class test {

    public static void main(String[] args) {


        List<PrepareTemplateVO> list = new ArrayList<>();

        PrepareTemplateVO vo1 = new PrepareTemplateVO();
        vo1.setTemplateId(1);
        vo1.setTempalteName("aa");
        PrepareTemplateVO vo2 = new PrepareTemplateVO();
        vo2.setTemplateId(2);
        vo2.setTempalteName("bb");
        list.add(vo1);
        list.add(vo2);

        // List 转 JSONArray
        JSONArray array= JSONArray.parseArray(JSON.toJSONString(list));
        System.out.println(array);     

        // JSONArray 转 List
        List<PrepareTemplateVO> list2 = JSONObject.parseArray(array.toJSONString(), PrepareTemplateVO.class);
        System.out.println(Arrays.toString(list2.toArray()));  
    }
}

输出为:

[{“tempalteName”:”aa”,”templateId”:1},{“tempalteName”:”bb”,”templateId”:2}]
[PrepareTemplateVO(templateId=1, tempalteName=aa), PrepareTemplateVO(templateId=2, tempalteName=bb)]

### 如何在 FastJSON 中实现 JSONArrayList相互转换 #### 将 JSONArray 转换List FastJSON 提供了多种方式可以将 `JSONArray` 转换Java 的 `List` 类型。以下是两种常见的方式: 1. **使用 `toJavaList` 方法** 这种方法是最简单最直接的,适合于将 JSON 数组中的数据映射到具体的泛型类中。 ```java import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import java.util.List; public class Main { public static void main(String[] args) { // 创建一个示例 JSONArray 字符串 String jsonString = "[{\"id\": 1, \"value\": \"A\"}, {\"id\": 2, \"value\": \"B\"}, {\"id\": 3, \"value\": \"C\"}]"; JSONArray jsonArray = JSON.parseArray(jsonString); // 使用 toJavaList 方法将其转换List<JSONObject> List<JSONObject> list = jsonArray.toJavaList(JSONObject.class); // 遍历并打印结果 for (JSONObject obj : list) { System.out.println(obj.toJSONString()); } } } ``` 上述代码展示了如何通过调用 `toJavaList` 方法来完成从 `JSONArray` 到 `List<JSONObject>` 的转换[^1]。 2. **使用 `parseArray` 方法** 如果目标是创建一个更通用的对象列表,则可以通过 `parseArray` 来解析原始数组字符串。 ```java import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import java.util.List; public class Main { public static void main(String[] args) { // 原始 JSON 数据 String jsonString = "[{ \"name\":\"John\", \"age\":30 }, { \"name\":\"Anna\", \"age\":22 }]"; // 解析成指定类型的 List List<Person> personList = JSON.parseArray(jsonString, Person.class); // 输出结果 for (Person p : personList) { System.out.println(p.getName() + ", " + p.getAge()); } } // 定义实体类 static 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; } } } ``` 此处利用了自定义的 `Person` 实体类作为模板,从而实现了更加结构化的数据处理。 --- #### 将 List 转换JSONArray 对于反向操作——即将普通的 Java `List` 或者其他集合类型化为 `JSONArray`,也可以借助 FastJSON 提供的功能轻松达成目的。 ```java import com.alibaba.fastjson.JSONArray; import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { // 构建一个简单的 List<String> List<String> stringList = new ArrayList<>(); stringList.add("Apple"); stringList.add("Banana"); // 将其JSONArray JSONArray jsonArrayFromStringList = JSONArray.parseArray(JSON.toJSONString(stringList)); // 同样适用于复杂对象 List<Person> people = new ArrayList<>(); people.add(new Person("Alice", 25)); people.add(new Person("Bob", 30)); JSONArray jsonArrayFromObjectList = JSONArray.parseArray(JSON.toJSONString(people)); // 打印两个结果 System.out.println("Simple Strings as JSONArray: " + jsonArrayFromStringList); System.out.println("Complex Objects as JSONArray: " + jsonArrayFromObjectList); } // 自定义类用于演示 static class Person { private final String name; private final int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "{\"name\":\"" + name + "\", \"age\":" + age + "}"; } } } ``` 在这个例子中,无论是基本的数据类型还是复杂的业务模型实例都可以被顺利封装进 `JSONArray` 当中[^2]。 --- ### 总结 以上分别介绍了基于 FastJSON 工具库的不同场景下关于 `JSONArray` `List` 彼此之间互相化的具体实践方案及其对应的应用案例。这些技术手段能够极大地简化开发者日常工作中涉及序列化/反序列化的繁琐流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值