java - 如何从 JSON 文件解析 JAVA ArrayList

标签 java json arraylist filereader arrays

我编写了下面的代码来将包含多个其他对象的复杂 Java 对象存储为磁盘上的文件

public static void savePattern(ArrayList<Pattern> p,String filename){
    String fn;
    Gson gson = new Gson();
    JsonElement element = gson.toJsonTree(p, new TypeToken<ArrayList<Pattern>>() {}.getType());
    JsonArray jsonArray = element.getAsJsonArray();
    String json = gson.toJson(jsonArray);
    try {
        //write converted json data to a file named "file.json"
        if(filename != null){
            fn = "JsonObjects/objects.json";
        }
        else{
            fn = "JsonObjects/" + filename + ".json";
        }
        FileWriter writer = new FileWriter("fn");
        writer.write(json);
        writer.close();
    } 
    catch (IOException e) {
        e.printStackTrace();
    }
}

当我尝试编写将文件从磁盘加载到具有该类型的 ArrayList 的方法时,我完全陷入困境。

public static ArrayList<Pattern> loadPattern(){
    ArrayList<Pattern> patterns = new ArrayList<>();
    Gson gson = new Gson();
    JsonParser jsonParser = new JsonParser();
    try {
        BufferedReader br = new BufferedReader(new FileReader("JsonObjects/objects.json"));
        JsonObject jo = (JsonObject)jsonParser.parse(br);

    } catch (IOException e) {
        e.printStackTrace();
    }
    return patterns;        
}

最佳答案

你尝试过吗:

public static List<Pattern> loadPattern(){
    ArrayList<Pattern> patterns = new ArrayList<>();
    Gson gson = new Gson();
    JsonParser jsonParser = new JsonParser();
    try {
        BufferedReader br = new BufferedReader(new FileReader("JsonObjects/objects.json"));
        JsonElement jsonElement = jsonParser.parse(br);

        //Create generic type
        Type type = new TypeToken<List<Pattern>>() {}.getType();
        return gson.fromJson(jsonElement, type);

    } catch (IOException e) {
        e.printStackTrace();
    }
    return patterns;        
}

关于java - 如何从 JSON 文件解析 JAVA ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27471861/

相关文章:

java - 在子类中强制使用 Java 属性类型

json - 在 Swift 3.1 中使用 SwiftyJSON 作为子数组

javascript - JSON 需要帮助

java - 如何创建可轻松插入现有项目而无需重新编译的 gwt 插件?

Java 如何将时间文字转换为长值?

windows - 在 VB.NET 中制作二维动态数组

java - 如何使用 ArrayList 创建一个表来保存来自继承类的不同对象?

android - 在不启动 Activity 的情况下传递包

Java错误: int cannot be dereferenced

java - 如何将 JSON 格式的数据从 WebView 传递到 HTML 页面