Java JSON - gson - 附加新数据,格式错误的JSON

时间:2016-03-04 08:35:48

标签: java json gson bufferedreader filewriter

我正在使用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键。非常感谢任何帮助。

由于

1 个答案:

答案 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();