我正在使用Jackson 2.6.5
。
我有以下JSON:
{
"field1":
{
"innerField1":"innervalue"
},
"field2":"value"
}
我按如下方式阅读JSON:
JSONObject jsonObj = new JSONObject(jsonString);
我想检查我的jsonObj
是否包含嵌套值,我想尝试的是:
if(!jsonObj.has("field1.innerField1"))//Trying to append if not exist
如果不存在附加值,我正在尝试的是:
jsonObj.put("field1.innerField1","innervalue");
但是它对我不起作用(has
始终包含false
,而put
创建一个新值,例如field1.innerField1.value
的固定净值,
那么我如何检查JSON是否包含嵌套值以及是否要附加它?
谢谢!
答案 0 :(得分:0)
键field1
包含json对象。因此,您需要使用键field1
读取JSONObject,然后使用必需的键检查是否存在。
试试这个:
String jsonString = "{ \n" +
" \"field1\":\n" +
" {\n" +
" \"innerField1\":\"innervalue\"\n" +
" },\n" +
"\n" +
" \"field2\":\"value\"\n" +
"}";
JSONObject jsonObj = new JSONObject(jsonString);
JSONObject innerJson = jsonObj.getJSONObject("field1");
if(!innerJson.has("innerField1")){
innerJson.put("innerField1","innervalue");
}
答案 1 :(得分:0)
请将您的JsonObject转换为字符串,并使用string.contatin方法检查给定的字符串是否存在于JsonObject字符串上
例如:-
String jsonString = "{ \n" +
" \"field1\":\n" +
" {\n" +
" \"innerField1\":\"innervalue\"\n" +
" },\n" +
"\n" +
" \"field2\":\"value\"\n" +
"}";
if(!jsonString.contain("\"innerField1\":\"innervalue\")){
//add element in json
}
答案 2 :(得分:-1)
JSONObject jsonObj= new JSONObject(jsonString);
if(jsonObj.has("innerField1")){
//do something
}
else{
jsonObj.put("innerField1","innervalue");
}