如果Java中的json文件中尚不存在另一个空JsonObject节点,该如何添加?

问题描述

我当前的JSON文件

{
    "dev": {
        "name": "James","address": "12 VK Street","city": "Austin"
    },"test": {
        "name": "Roy","address": "15 VK Street","city": "New York"
    }
}

我还有另一个称为beta的环境。
需要检查当前JSON文件中是否存在beta节点。
如果当前JSON文件中存在beta,则表示它正常,并且JSON文件中没有任何更改。
如果beta节点不存在,那么我需要为beta添加节点并将JSON文件更新为以下内容

{
    "dev": {
        "name": "James","city": "New York"
    }
    "beta": {
    }
}

我尝试了以下代码,但没有用。
检查JSON是否已具有所需的对象。如果没有,请创建一个新的

JSONObject main = new JSONObject(jsonString);
    if (!main.has("beta")) {
        main.put("beta",new JSONObject());
        // main.put("beta",""); didn't work
        // main.put("beta","{}"); didn't work
}

如何用Java实现呢?我尝试使用Jackson,简单JSON,但没有成功。谢谢!

===========================

让它正常工作

private void addReplaceValueInjson(String key,String value) throws Exception {
        File jsonFile = new File("testdata.json");
        String jsonString = FileUtils.readFiletoString(jsonFile,Charset.defaultCharset());
        String env = System.getProperty(Constant.ENV);

        JsonElement mainElement = new JsonParser().parse(jsonString);
        JsonObject mainObject = mainElement.getAsJsonObject();

        // If env node is not present in json then create one
        if (!mainObject.has(env)) {
            JsonElement envElement = new JsonParser().parse(new JSONObject("{}").toString());
            mainObject.add(env,envElement);
        }

        try {
            mainObject.getAsJsonObject(env).addProperty(key,value);
            String resultingJson = new Gson().toJson(mainElement);
            FileUtils.writeStringToFile(jsonFile,resultingJson,Charset.defaultCharset());
        } catch (Exception e) {
            System.out.println("JSONObject: " + env + " missing in testdata.json. Please add " + env + " node.");
        }
    }

这将添加子jsonobject(如果不存在)。 并更新密钥的值或添加新的密钥代替整个文件刷新n关闭

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)