Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查Json对象中是否存在键并获取其值_Java_Android_Json_Performance_Android Layout - Fatal编程技术网

Java 如何检查Json对象中是否存在键并获取其值

Java 如何检查Json对象中是否存在键并获取其值,java,android,json,performance,android-layout,Java,Android,Json,Performance,Android Layout,假设这是我的JSON对象 { "LabelData": { "slogan": "AWAKEN YOUR SENSES", "jobsearch": "JOB SEARCH", "contact": "CONTACT", "video": "ENCHANTING BEACHSCAPES", "createprofile": "CREATE PROFILE" } } 我需要知道该对象中是否存在“video”,如果存在,我需要获取该键的值。我尝试了以

假设这是我的
JSON对象

{
  "LabelData": {
    "slogan": "AWAKEN YOUR SENSES",
    "jobsearch": "JOB SEARCH",
    "contact": "CONTACT",
    "video": "ENCHANTING BEACHSCAPES",
    "createprofile": "CREATE PROFILE"
  }
}
我需要知道该对象中是否存在“video”,如果存在,我需要获取该键的值。我尝试了以下操作,但无法获取此密钥的值

 containerObject= new JSONObject(container);
 if(containerObject.hasKey("video")){
  //get Value of video
}
使用:


使用下面的代码查找
JsonObject
中的密钥是否存在
has(“key”)
方法用于在
JsonObject
中查找键

containerObject = new JSONObject(container);
//has method
if (containerObject.has("video")) {
    //get Value of video
    String video = containerObject.optString("video");
}
containerObject = new JSONObject(container);
if (containerObject.has("video")) { 
   //get Value of video
}

如果您正在使用
optString(“key”)
方法获取字符串值,那么从源对象的结构来看,不要担心键是否存在于
JsonObject

中,我会尝试:

containerObject = new JSONObject(container);
//has method
if (containerObject.has("video")) {
    //get Value of video
    String video = containerObject.optString("video");
}
containerObject = new JSONObject(container);
if (containerObject.has("video")) { 
   //get Value of video
}
containerObject= new JSONObject(container);
 if(containerObject.has("LabelData")){
  JSONObject innerObject = containerObject.getJSONObject("LabelData");
     if(innerObject.has("video")){
        //Do with video
    }
}
请试试这个

JSONObject jsonObject= null;
try {
     jsonObject = new JSONObject("result........");
     String labelDataString=jsonObject.getString("LabelData");
     JSONObject labelDataJson= null;
     labelDataJson= new JSONObject(labelDataString);
     if(labelDataJson.has("video")&&labelDataJson.getString("video")!=null){
       String video=labelDataJson.getString("video");
     }
    } catch (JSONException e) {
      e.printStackTrace();
 }
我想这可能会帮助你尝试一下

private boolean hasKey(JSONObject jsonObject, String key) {
    return jsonObject != null && jsonObject.has(key);
}

  try {
        JSONObject jsonObject = new JSONObject(yourJson);
        if (hasKey(jsonObject, "labelData")) {
            JSONObject labelDataJson = jsonObject.getJSONObject("LabelData");
            if (hasKey(labelDataJson, "video")) {
                String video = labelDataJson.getString("video");
            }
        }
    } catch (JSONException e) {

    }

JSONObject类有一个名为“has”的方法。 如果此对象具有名称映射,则返回true。映射可能为空。

您使用的是哪个json库(名称和版本)?为什么不使用gson库将json解析为Java Obj,并使用vise versawhat is
container
这里是什么?container是简单的JsonObject。我在androidif中使用简单的JSONObject,如果键不存在,那么您的条件是否执行?对这种情况使用异常处理是非常糟糕的解决方案。请注意,您只能使用has()检查根键。使用Get()获取值。如果找不到containerObject.has,可以尝试containerObject.ContainerKey。。是我干的。。