首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将jsonobject追加到现有jsonobject

将jsonobject追加到现有jsonobject
EN

Stack Overflow用户
提问于 2018-07-18 15:41:08
回答 2查看 456关注 0票数 0

我对Json文件的读写有问题。我想在一个json文件中添加一些东西,但是它不能正常工作:它只是放入一个新的jsonobject,而没有使用'‘来将它与前一个对象分开。我到处搜索,每个网站,但没有给我一个投入,如何正确地做它。

例如,我有一个像这样的json文件:

代码语言:javascript
复制
{
    "Example":{
        "Ok":"Ok1",
        "Nice":"Nice1",
        "Hi":"Hi1",
        "Hello":"Hello1",
        "Right":"Right1",
        "Wow":"Wow1"
    }
}

我想让它看起来像这样:

代码语言:javascript
复制
{
    "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"
    }
}

因此,我尝试使用以下代码:

代码语言:javascript
复制
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(); }

但是当我使用它时,它给了我这样的输出:

代码语言:javascript
复制
{
    "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,我不想换到另一个库。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-18 16:54:43

您更改了问题,但现在您的新问题的答案是您使用相同的文件来读取和写入。这就是为什么在文件中添加数据的原因。更改您编写的文件的名称,看看是否有问题。

票数 1
EN

Stack Overflow用户

发布于 2018-07-18 15:53:04

请检查"br“是否为空。

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

如果是这种情况,则调用null toString()方法并获得空指针异常。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51406040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档