Java 解析JSON对象并将其存储到现有的ArrayList中
我有一个方法可以将我的对象写入JSON文件,有没有一种方法可以读取对象并将它们存储回ArrayList?理想情况下,我希望将对象存储到“music”ArrayList中 写入JSON方法:Java 解析JSON对象并将其存储到现有的ArrayList中,java,json,arraylist,Java,Json,Arraylist,我有一个方法可以将我的对象写入JSON文件,有没有一种方法可以读取对象并将它们存储回ArrayList?理想情况下,我希望将对象存储到“music”ArrayList中 写入JSON方法: public class TimelineLayout extends JFrame { private static final long serialVersionUID = 1L; private JLabel timelineLabel; static ArrayList<
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();
}
}
}
正在尝试使用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;
}
公共静态列表loadMusic(){
ArrayList musicList=新的ArrayList();
Gson Gson=新的Gson();
JsonParser JsonParser=新的JsonParser();
试一试{
BufferedReader br=新的BufferedReader(新文件阅读器(“objects.json”);
JsonElement=jsonParser.parse(br);
//创建泛型类型
java.lang.reflect.Type=new-TypeToken(){
}.getType();
返回gson.fromJson(jsonElement,类型);
}捕获(IOE异常){
e、 printStackTrace();
}
回归音乐家;
}
您可以使用像GSON或Jackson这样的JSON解析器库来实现这一点。通过谷歌搜索这些术语来获取如何使用这些库的示例。我目前正在使用GSON library来完成此方法,尽管我似乎没有幸将其存储到arrayList中,但我将使用我当前的读取方法进行更新。在您的try块中,尝试使用以下代码:try{BufferedReader br=new BufferedReader(new FileReader(objects.json));返回gson.fromJson(br,new-TypeToken(){}.getType());}
如何使用对象访问此ArrayList?您可以执行类似于musicList=gson.fromJson(br,new-TypeToken(){}.getType()的操作,而不是直接从try块内部返回ArrayListmusicList
对象现在是一个ArrayList
对象,其中填充了json文件中的Music
对象。从loadMusic()
函数返回后,您可以正常访问它,例如,您可以从main
方法调用ArrayList myMusicList=loadMusic()
。我是否正确理解了您的问题?这有帮助吗?您可以使用GSON或Jackson之类的JSON解析器库来做到这一点。通过谷歌搜索这些术语来获取如何使用这些库的示例。我目前正在使用GSON库来完成此方法,尽管我似乎没有运气将其存储到arrayList中,但我将使用我的当前读取方法。在try块中,尝试使用以下代码:try{BufferedReader br=new BufferedReader(new FileReader(objects.json));返回gson.fromJson(br,new TypeToken(){}.getType());}
如何使用对象访问此ArrayList?您可以执行类似于musicList=gson.fromJson(br,new-TypeToken(){}.getType())的操作,而不是直接从try块内部返回ArrayListmusicList
对象现在是一个ArrayList
对象,其中填充了json文件中的Music
对象。从loadMusic()
函数返回后,您可以正常访问它,例如,您可以从main
方法调用ArrayList myMusicList=loadMusic();
。我正确理解你的问题了吗?这有帮助吗?
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;
}