public boolean wirteJson(Passenger passenger[]){
try {
file = new FileWriter(System.getProperty("user.dir")+"/"+fileName);
for (int i = 0; i < 10; i++) {
String json =gson.toJson(passenger[i]);
file.write(json);
}
file.flush();
file.close();
} catch (IOException ex) {
return false;
}
return false;
}
我试图用Gson将passenger
数组写入文件。我对其他选择持开放态度。
答案 0 :(得分:3)
您不必按每个元素序列化给定的输入数组:
ArrayIndexOutOfBoundsException
,或者只写入前10个元素); {},{},{}
无效,而[{},{},{}]
则为; 您只需要两种方法Gson.toJson和Gson.fromJson。 所以,这是一个简单的例子:
final class Passenger {
final String name;
Passenger(final String name) {
this.name = name;
}
}
public static void main(final String... args)
throws IOException {
final File file = createTempFile("q43439637_", "_q43439637");
file.deleteOnExit();
try ( final FileWriter fileWriter = new FileWriter(file) ) {
final Passenger[] before = { new Passenger("Alice"), new Passenger("Bob") };
gson.toJson(before, fileWriter);
}
try ( final FileReader fileReader = new FileReader(file) ) {
final Passenger[] after = gson.fromJson(fileReader, Passenger[].class);
for ( final Passenger p : after ) {
System.out.println(p.name);
}
}
}
输出:
爱丽丝
鲍勃
P.S。您的catch
return
似乎不得不返回true
而不是false
。此外,flush()
之前不需要close()
。