猿问

如果没有放置新值,则检查 JSONObject 是否包含嵌套值

我正在使用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.valueinstaed netsted 价值,


那么如何检查 JSON 是否包含嵌套值,如果不附加它呢?


神不在的星期二
浏览 189回答 3
3回答

桃花长相依

密钥field1包含 json 对象。所以您需要使用密钥读取 JSONObject,field1然后使用所需的密钥检查是否存在。试试这个: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");    }

喵喔喔

 JSONObject jsonObj= new JSONObject(jsonString);if(jsonObj.has("innerField1")){//do something}else{     jsonObj.put("innerField1","innervalue");}
随时随地看视频慕课网APP

相关分类

Java
我要回答