如何检查JSON键是否存在?

我从服务器得到一些JSON值,但我不知道是否会有一个特定的字段。

就像:

{ "regatta_name":"ProbaRegatta",
"country":"Congo",
"status":"invited"
}

有时,会有一个额外的字段,比如:

{ "regatta_name":"ProbaRegatta",
"country":"Congo",
"status":"invited",
"club":"somevalue"
}

我想查询一下名为“club”的字段是否;存在,所以在解析时我不会得到

jsonexception:没有club的值

429123 次浏览

你可以JSONObject#has,提供key作为输入,检查方法是否返回truefalse。你也可以

使用optString代替getString:

如果存在则返回按名称映射的值,如果存在则强制返回 必要的。如果不存在这样的映射则返回空字符串

JSONObject类有一个名为"has"的方法:

< a href = " http://developer.android.com/reference/org/json/JSONObject.html(以)" > http://developer.android.com/reference/org/json/JSONObject.html有(以)< / >

如果该对象有name的映射,则返回true。映射可能是NULL。

在读取键之前检查一下,就像在读取之前一样

JSONObject json_obj=new JSONObject(yourjsonstr);
if(!json_obj.isNull("club"))
{
//it's contain value to be read operation
}
else
{
//it's not contain key club or isnull so do this operation here
}

isNull函数定义

Returns true if this object has no mapping for name or
if it has a mapping whose value is NULL.

下面是isNull函数的官方文档链接

http://developer.android.com/reference/org/json/JSONObject.html#isNull(java.lang.String)

你可以这样检查,'HAS' -如果该对象有name的映射,则返回true。映射可能是NULL。

if (json.has("status")) {
String status = json.getString("status"));
}


if (json.has("club")) {
String club = json.getString("club"));
}

你也可以使用'isNull'检查-如果该对象没有返回true 如果它有一个值为NULL的映射,

if (!json.isNull("club"))
String club = json.getString("club"));

试试这个

if(!jsonObj.isNull("club")){
jsonObj.getString("club");
}

你可以使用has

public boolean has(String key)

确定JSONObject是否包含< em > < / em >特定关键

例子

JSONObject JsonObj = new JSONObject(Your_API_STRING); //JSONObject is an unordered collection of name/value pairs


if (JsonObj.has("address")) {
//Checking address Key Present or not
String get_address = JsonObj .getString("address"); // Present Key
}
else {
//Do Your Staff
}

一个更好的方法,而不是使用条件句:

if (json.has("club")) {
String club = json.getString("club"));
}

就是简单地使用现有的方法optString(),就像这样:

String club = json.optString("club);

如果键不存在,optString("key")方法将返回空String,因此将抛出异常。

I used hasOwnProperty('club')


var myobj = { "regatta_name":"ProbaRegatta",
"country":"Congo",
"status":"invited"
};


if ( myobj.hasOwnProperty("club"))
// do something with club (will be false with above data)
var data = myobj.club;
if ( myobj.hasOwnProperty("status"))
// do something with the status field. (will be true with above ..)
var data = myobj.status;

适用于当前所有浏览器。

我只是添加了另一个东西,如果你只是想检查是否在JSONObject中创建了任何东西,你可以使用长度(),因为默认情况下,当JSONObject初始化时,没有键被插入,它只是有空花括号{}和使用(字符串键)没有任何意义。

所以你可以直接写if (jsonObject.length() > 0)并做你的事情。

学习快乐!

试试这个:

let json=yourJson


if(json.hasOwnProperty(yourKey)){
value=json[yourKey]
}

你可以试着检查这个键是否存在:

JSONObject object = new JSONObject(jsonfile);
if (object.containskey("key")) {
object.get("key");
//etc. etc.
}

Json有一个名为containsKey()的方法。

你可以使用它来检查某个键是否包含在Json集中。

File jsonInputFile = new File("jsonFile.json");
InputStream is = new FileInputStream(jsonInputFile);
JsonReader reader = Json.createReader(is);
JsonObject frameObj = reader.readObject();
reader.close();


if frameObj.containsKey("person") {
//Do stuff
}

你可以使用JsonNode # hasNonNull(字符串字段名),它混合了方法和验证是否为