我正在使用Gson来写入和读取文件。
每次创建用户时,我都会附加一行显示用户名和ID。
我使用以下内容执行此操作(UserAccount是我的pojo类,br是我的缓冲读取器)::
UserAccount accountObj = new UserAccount();
FileWriter writer = new FileWriter("store.json", true);
accountObj.setUser(NewUserMethod());
accountObj.setID(NewIDMethod());
String json = gson.toJson(accountObj);
writer.write(json);
writer.close();
这使得json文件起作用 - 就像这样::
{"USER":"noob123","ID":"99"}
当新用户执行此操作时,它将追加下一行,如::
{"USER":"noob123","ID":99}{"USER":"pro321","ID":100}
当我尝试读取这个json文件时,我收到以下错误::
"use JsonReader.setLenient(true) to accept malformed JSON at line 1, column 36"
所以我理解它可能是不正确的格式,可能需要像::
这样的东西{"ACCOUNT":{"USER":"noob123","ID":99},"ACCOUNT":{"USER":"pro321","ID":100}}
我花了一些时间尝试以这种格式创建JSON,或者至少在使用匹配的USER名称时引用正确的USER键。非常感谢任何帮助。
由于
答案 0 :(得分:1)
您应该使用JSONArray将此信息保存到文件中。然后,您可以将文件内容读入UserAccount
列表,将新对象添加到此列表中。
然后你应该覆盖文件的内容。
例如。 :
UserAccount accountObj = new UserAccount();
accountObj.setUser(NewUserMethod());
accountObj.setID(NewIDMethod());
List<UserAccount> userAccounts = gson.fromJson(<jsonContent>, new TypeToken<List<UserAccount>>() {
}.getType());
userAccounts.add(accountObj);
String json = gson.toJson(userAccounts);
writer.write(json);
writer.close();