解析JSON对象并将它们存储到现有的ArrayList中

时间:2017-11-28 17:20:12

标签: java json arraylist

我有一个将对象写入JSON文件的方法,有没有办法可以读取对象并将它们存储回ArrayList?理想情况下,我希望将对象存储到“音乐”中。 ArrayList中。

写入JSON方法:

public class TimelineLayout extends JFrame {
    private static final long serialVersionUID = 1L;
    private JLabel timelineLabel;
    static ArrayList<Music> music = new ArrayList<>();

    public static void saveMusic(ArrayList<Music> music, String filename) {

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

JSON对象:

  [{
        "artist": "Usher",
        "title": "U got it bad",
        "genre": "Pop",
        "duration": 3.01,
        "year": 2003
    },
    {
        "artist": "Coldplay",
        "title": "Viva la vida",
        "genre": "Rock n ",
        "duration": 2.56,
        "year": 2001
    }
 ]

尝试使用GSON库进行解析:

public static List<Music> loadMusic() {

    ArrayList<Music> musicList = new ArrayList<>();
    Gson gson = new Gson();
    JsonParser jsonParser = new JsonParser();
    try {
        BufferedReader br = new BufferedReader(new FileReader("objects.json"));
        JsonElement jsonElement = jsonParser.parse(br);

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

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

    return musicList;
}

0 个答案:

没有答案