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。。是我干的。。