You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将JSON String转换为对象的ArrayList?

将JSON数组转换为Java对象ArrayList的方法

嘿,我来帮你搞定这个JSON转ArrayList的问题!你拿到的是一个包含多个对象的JSON数组,要转成Java的ArrayList<YourObject>其实很简单,下面分步骤给你讲清楚:

首先先确认下你拿到的JSON内容:

[ 
  { "id":15, "title":"1", "description":"desc", "user_id":152 }, 
  { "id":18, "title":"2", "description":"desc", "user_id":152 }, 
  { "id":19, "title":"tab3", "description":"zadanka", "user_id":152 } 
]

第一步:创建对应的实体类

首先你需要定义一个和JSON字段匹配的Java类,比如叫Task(名字可以自己取),字段要和JSON里的键对应上,还要注意构造函数和getter/setter:

public class Task {
    private int id;
    private String title;
    private String description;
    // 如果你的变量名想改成userId,就加@JsonProperty("user_id")(Jackson)或者@SerializedName("user_id")(Gson)
    private int user_id;

    // 必须要有无参构造函数,不然解析库无法实例化对象
    public Task() {}

    // 生成getter和setter方法,也可以用Lombok的@Data注解来简化代码
    public int getId() { return id; }
    public void setId(int id) { this.id = id; }
    public String getTitle() { return title; }
    public void setTitle(String title) { this.title = title; }
    public String getDescription() { return description; }
    public void setDescription(String description) { this.description = description; }
    public int getUser_id() { return user_id; }
    public void setUser_id(int user_id) { this.user_id = user_id; }
}

第二步:用Jackson库解析(Spring常用)

Jackson是Java生态里最常用的JSON解析库之一,如果你用Spring的话,大概率已经引入了这个库。

先引入依赖(Maven)

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version> <!-- 建议用最新稳定版 -->
</dependency>

解析代码

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.util.ArrayList;

public class JsonToArrayList {
    public static void main(String[] args) {
        String jsonStr = "[ { \"id\":15, \"title\":\"1\", \"description\":\"desc\", \"user_id\":152 }, { \"id\":18, \"title\":\"2\", \"description\":\"desc\", \"user_id\":152 }, { \"id\":19, \"title\":\"tab3\", \"description\":\"zadanka\", \"user_id\":152 } ]";
        
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            // 用TypeReference来指定泛型类型,避免类型擦除问题
            ArrayList<Task> taskList = objectMapper.readValue(jsonStr, new TypeReference<ArrayList<Task>>() {});
            
            // 测试输出,验证转换结果
            for (Task task : taskList) {
                System.out.println("任务ID:" + task.getId() + ",标题:" + task.getTitle());
            }
        } catch (Exception e) {
            // 处理解析异常,比如JSON格式错误、字段不匹配等
            e.printStackTrace();
        }
    }
}

第三步:用Gson库解析(Google出品)

如果你更习惯用Google的Gson库,也可以这么做:

引入依赖(Maven)

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10.1</version> <!-- 最新稳定版 -->
</dependency>

解析代码

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

import java.util.ArrayList;

public class GsonToArrayList {
    public static void main(String[] args) {
        String jsonStr = "[ { \"id\":15, \"title\":\"1\", \"description\":\"desc\", \"user_id\":152 }, { \"id\":18, \"title\":\"2\", \"description\":\"desc\", \"user_id\":152 }, { \"id\":19, \"title\":\"tab3\", \"description\":\"zadanka\", \"user_id\":152 } ]";
        
        Gson gson = new Gson();
        // 用TypeToken来获取泛型类型,解决类型擦除问题
        ArrayList<Task> taskList = gson.fromJson(jsonStr, new TypeToken<ArrayList<Task>>(){}.getType());
        
        // 测试输出
        for (Task task : taskList) {
            System.out.println("任务ID:" + task.getId() + ",标题:" + task.getTitle());
        }
    }
}

几个关键注意点

  • 必须要有无参构造函数:解析库需要通过无参构造来创建对象,不然会抛出异常
  • 字段名匹配:如果JSON里的字段名(比如user_id)和Java变量名不一样,记得用注解映射
  • 异常处理:解析过程中可能会出现JSON格式错误、字段类型不匹配等问题,一定要捕获异常并处理

内容的提问来源于stack exchange,提问作者user9351774

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:03:19