
@[toc]
一、介绍
这段代码演示了使用阿里巴巴 Fastjson 库将 Java 对象列表转换为 JSONArray 的正确方法,并特别指出了常见的错误写法。
首先创建了一个包含多个 User 对象的 List 列表。代码重点展示了两种转换方式:
- 错误写法:直接调用 list.toString() 后使用 JSONArray.parseArray() 解析,由于 List.toString() 输出格式不是标准 JSON 格式,会抛出解析异常
- 正确写法:先通过 JSONObject.toJSONString(list) 将列表序列化为标准 JSON 字符串,再使用 JSONArray.parseArray() 解析为 JSONArray
同时注释中还提供了另一种正确方式:手动遍历列表,创建 JSONObject 并逐个添加到 JSONArray 中。
二、代码
@Test
public void listConverjJsonArray(){
List<User> list = new ArrayList<>();
list.add(new User(1, "a"));
list.add(new User(2, "b"));
//错误写法,因为list.toString()输出[User(id=1, name=a), User(id=2, name=b)]。这东西无法json解析,会报错:com.alibaba.fastjson.JSONException: syntax error, pos 2, line 1, column 3[User(id=1, name=a), User(id=2, name=b)]
// JSONArray jsonArray =JSONArray.parseArray(list.toString());
//正确写法,简写方式
JSONArray jsonArray =JSONArray.parseArray(JSONObject.toJSONString(list));
//正确写法,复杂方式
// JSONArray jsonArray = new JSONArray();
// JSONObject jsonObject = null;
// for (User user: list) {
// jsonObject = new JSONObject();
// jsonObject.put("id", user.getId());
// jsonObject.put("name", user.getName());
// jsonArray.add(jsonObject);
// }
System.out.println(jsonArray);
}

重要信息


