将jsonobject追加到现有的jsonobject

时间:2018-07-18 15:41:08

标签: java json gson

我在读取和写入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"
    }
}

那是输出,您看,这是错误的,我不知道如何编写代码以提供不同的输出。

我正在使用Gson 2.8.5,所以我不想更改为其他库。

2 个答案:

答案 0 :(得分:1)

您更改了问题,但是现在新问题的答案是使用相同的文件进行读写。这就是为什么在文件内部添加数据的原因。更改所写文件的名称,看看是否有问题

答案 1 :(得分:0)

请检查“ br”是否不为空。

根据fromJson方法的规范,它返回: 字符串中类型为T的对象。如果json为null,则返回null。

如果是这种情况,那么您调用null的toString()方法时会得到null指针异常