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

就像:

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

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

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

我想检查名为“俱乐部”的字段是否存在,以便在解析时我不会得到

jsonexception:没有club的值


当前回答

试试这个:

let json=yourJson

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

其他回答

试试这个:

let json=yourJson

if(json.hasOwnProperty(yourKey)){
    value=json[yourKey]
}
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被初始化时,没有键被插入,它只是有空括号{}和使用has(String key)没有任何意义。

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

学习快乐!

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
}

你可以jsonobject#有,提供键作为输入,并检查方法是否返回真或假。你也可以

使用optString代替getString:

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