微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如果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 举报,一经查实,本站将立刻删除。