我对Json文件的读写有问题。我想在一个json文件中添加一些东西,但是它不能正常工作:它只是放入一个新的jsonobject,而没有使用',‘来将它与前一个对象分开。我到处搜索,每个网站,但没有给我一个投入,如何正确地做它。
例如,我有一个像这样的json文件:
{
"Example":{
"Ok":"Ok1",
"Nice":"Nice1",
"Hi":"Hi1",
"Hello":"Hello1",
"Right":"Right1",
"Wow":"Wow1"
}
}我想让它看起来像这样:
{
"Example":{
"Ok":"Ok1",
"Nice":"Nice1",
"Hi":"Hi1",
"Hello":"Hello1",
"Right":"Right1",
"Wow":"Wow1"
},
"Example1":{
"Ok":"Ok2",
"Nice":"Nice2",
"Hi":"Hi2",
"Hello":"Hello2",
"Right":"Right2",
"Wow":"Wow2"
}
}因此,我尝试使用以下代码:
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonObject jsonObject = new JsonObject();
JsonObject dati = new JsonObject();
dati.addProperty("Cognome", StringUtils.capitalize((fields[0].getText())));
dati.addProperty("Nome", StringUtils.capitalize((fields[1].getText())));
dati.addProperty("Sesso", lblSesso.getText());
dati.addProperty("Luogo di nascita", StringUtils.capitalize((fields[2].getText())));
dati.addProperty("Provincia", lblProvincia.getText());
dati.addProperty("Data di nascita", fieldDDN.getText());
jsonObject.add(codfis, dati);
String json = gson.toJson(jsonObject);
try (BufferedReader br = new BufferedReader(new FileReader("CodFisCalcolati.json"));
BufferedWriter bw = new BufferedWriter(new FileWriter("CodFisCalcolati.json", true))) {
String jsonString = gson.fromJson(br, JsonElement.class).toString();
JsonElement jelement = new JsonParser().parse(jsonString);
JsonObject jobject = jelement.getAsJsonObject();
jobject.add(codfis, dati);
String resultingJson = gson.toJson(jelement);
bw.write(resultingJson);
bw.close();
} catch (IOException e1) { e1.printStackTrace(); }但是当我使用它时,它给了我这样的输出:
{
"Example":{
"Ok":"Ok1",
"Nice":"Nice1",
"Hi":"Hi1",
"Hello":"Hello1",
"Right":"Right1",
"Wow":"Wow1"
}
}{
"Example":{
"Ok":"Ok1",
"Nice":"Nice1",
"Hi":"Hi1",
"Hello":"Hello1",
"Right":"Right1",
"Wow":"Wow1"
},
"Example1":{
"Ok":"Ok2",
"Nice":"Nice2",
"Hi":"Hi2",
"Hello":"Hello2",
"Right":"Right2",
"Wow":"Wow2"
}
}这是输出,你看,这是错误的,我不知道如何使代码给我一个不同的输出。
我使用的是gson2.8.5,我不想换到另一个库。
发布于 2018-07-18 16:54:43
您更改了问题,但现在您的新问题的答案是您使用相同的文件来读取和写入。这就是为什么在文件中添加数据的原因。更改您编写的文件的名称,看看是否有问题。
发布于 2018-07-18 15:53:04
请检查"br“是否为空。
根据方法fromJson的规范,它返回:字符串中类型为T的对象。如果json为空,则返回空。
如果是这种情况,则调用null toString()方法并获得空指针异常。
https://stackoverflow.com/questions/51406040
复制相似问题