首页 > 解决方案 > Java中不同对象解析json文件的常用方法

问题描述

我有一个解析器方法来解析一个 json 文件。我为 ClassA 创建了它,但我也想将它用于不同的类,例如 ClassB 和 ClassC

我的代码:

public static List<ClassA> parseFromFile(String path){
    JSONParser parser = new JSONParser();
    List<ClassA> list = new ArrayList<>(Collections.emptyList());

    try {
        BufferedReader in = new BufferedReader(new FileReader(path));

        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            JSONArray a = (JSONArray) parser.parse(inputLine);

            for (Object o : a) {
                JSONObject jsonObject = (JSONObject) o;

                ClassA a = new Gson().fromJson(String.valueOf(jsonObject), ClassA.class);
                list.add(a);
            }
        }
        in.close();
    } catch (IOException | ParseException e) {
        e.printStackTrace();
    }

    return list;
}

标签: javamethods

解决方案


将类作为参数传入。您需要更改这些行:

public static <T> List<T> parseFromFile(String path, Class<T> type){
    JSONParser parser = new JSONParser();
    List<T> list = new ArrayList<>(Collections.emptyList());

这行:

                T a = new Gson().fromJson(String.valueOf(jsonObject), klass);

如果我是您,您会查看此实现是否有意义:看起来您首先使用org.json库解析文件内容,然后转换回 JSON,然后使用 Gson 再次解析。您只需要解析一次:

    BufferedReader in = new BufferedReader(new FileReader(path));
    T a = new Gson().fromJson(in, klass);

推荐阅读