Gson Library在文件中写入并仅更改特定值

时间:2015-07-18 19:19:32

标签: java json gson

我目前正在使用Gson库来编写/读取.json文件。我有这个方法来介绍json。

    public static void write(String key, String value){
    GeneralJsonConfig gjc = new GeneralJsonConfig();
    if(key.equals("testKey")){
        gjc.setaucString(value);
    }
    Gson gson = new Gson();
    String json = gson.toJson(gjc);
    try{
    FileWriter fw = new FileWriter(launcherConfigFile);
    fw.write(json);
    fw.close();
    } catch(IOException e) {

    }
}

但是让我说我​​有这个.json:

{"testKey": "some test", "testKey2": "test 3"}

我只想将thestKey从“某个测试”更改为另一个文本,其他键/值将保持原样,但是使用我的方法,其他值/键只是更便宜,我该如何解决这个问题呢?让其他键/值保持不变?

更新: 找到一个基于sam100rav答案的答案,我只是阅读完整的json文件来获取vaules,然后再次使用我想要的更改写下它们:

public static void write(String key, String value){
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        try{
            BufferedReader br = new BufferedReader(new FileReader(launcherConfigFile));
            GeneralJsonConfig gjcObject = gson.fromJson(br, GeneralJsonConfig.class);
    if(key.equals("testKey")){
        gjc.setaucString(value);
    }
            String json = gson.toJson(gjcObject);
            FileWriter fw = new FileWriter(launcherConfigFile);
            fw.write(json);
            fw.close();
            br.close();
        } catch (IOException e){
            main.er.LogError("23", "");
        }

2 个答案:

答案 0 :(得分:1)

JSONObject obj = new JSONObject();
obj.put("testKey", "some test");
obj.put("testKey2", "test 3");
if(key.equals("testKey")){
        obj.put("testKey", value);
    }
    String json = obj.toString();
    try{
    FileWriter fw = new FileWriter(launcherConfigFile);
    fw.write(json);
    fw.close();
    } 

答案 1 :(得分:0)

找到了一个基于sam100rav答案的答案,我只需阅读完整的json文件以获取vaule,然后使用我想做的更改再次将其写入:

public static void write(String key, String value){
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        try{
            BufferedReader br = new BufferedReader(new FileReader(launcherConfigFile));
            GeneralJsonConfig gjcObject = gson.fromJson(br, GeneralJsonConfig.class);
    if(key.equals("testKey")){
        gjc.setaucString(value);
    }
            String json = gson.toJson(gjcObject);
            FileWriter fw = new FileWriter(launcherConfigFile);
            fw.write(json);
            fw.close();
            br.close();
        } catch (IOException e){
            main.er.LogError("23", "");
        }