问题描述
我当前的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 (将#修改为@)