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

如何使用ArrayDeque结合Gson从JSON文件中获取数据?

使用Gson结合ArrayDeque读取JSON文本数据的实现方案

嘿,我来帮你搞定这个问题!其实用Gson把JSON数组转成ArrayDeque<TextData>非常简单,下面一步步给你讲清楚具体实现:

1. 先确保Gson依赖已配置

如果是Maven项目,在pom.xml里添加:

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

如果是Gradle项目,在build.gradle的dependencies块里添加:

implementation 'com.google.code.gson:gson:2.10.1'

2. 核心实现代码

这里提供两种可行的实现方式,你可以根据自己的习惯选择:

方式一:先转List再转ArrayDeque

这种方式更直观,适合刚接触Gson的开发者:

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.util.ArrayDeque;
import java.util.List;

public class JsonToDequeExample {
    public static void main(String[] args) {
        // 你的JSON字符串
        String json = "[ { \"type\": \"text\", \"content\": \"test test test\", \"time\": 100 }, { \"type\": \"text\", \"content\": \"abcedfg\", \"time\": 100 }, { \"type\": \"text\", \"content\": \"some data\", \"time\": 100 }, { \"type\": \"text\", \"content\": \"1234567\", \"time\": 100 } ]";
        
        // 初始化Gson实例
        Gson gson = new Gson();
        
        // 第一步:将JSON解析为List<TextData>
        List<TextData> textDataList = gson.fromJson(
            json,
            new TypeToken<List<TextData>>() {}.getType()
        );
        
        // 第二步:将List转换为ArrayDeque
        ArrayDeque<TextData> textDataDeque = new ArrayDeque<>(textDataList);
        
        // 验证解析结果
        for (TextData data : textDataDeque) {
            System.out.printf("Type: %s, Content: %s, Time: %d%n", 
                data.type, data.content, data.time);
        }
    }
}

// 你的TextData类,注意调整访问权限或添加无参构造
class TextData {
    public String type;
    public String content;
    public long time;
    
    // 无参构造(Gson默认需要这个来实例化对象)
    public TextData() {}
    
    // 原有的有参构造
    public TextData(String type, String content, long time) {
        this.type = type;
        this.content = content;
        this.time = time;
    }
}

方式二:直接解析为ArrayDeque

如果你想一步到位,可以直接用TypeToken指定ArrayDeque<TextData>的类型:

// 替换方式一中的List转换步骤,直接解析为ArrayDeque
ArrayDeque<TextData> textDataDeque = gson.fromJson(
    json,
    new TypeToken<ArrayDeque<TextData>>() {}.getType()
);

3. 关键注意事项

  • TextData类的配置:Gson通过反射实例化对象时,默认需要无参构造函数;或者你可以把字段设为public(就像上面代码那样),这样Gson可以直接给字段赋值,避免构造函数相关的问题。
  • TypeToken的作用:由于Java泛型擦除机制,直接传入ArrayDeque.class的话,Gson无法知道容器内的元素类型是TextData,所以必须用TypeToken来保留泛型类型信息,确保解析的准确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:34:25