我想检查我的JSONObject
中是否存在条目,并且该条目的类型应该是避免使用时出现异常的类型。
我发现我的问题几乎可以回答Java Check if JSONObject key exists使用has()
运算符的问题
import org.json.JSONArray
import org.json.JSONObject
var j:JSONObject
...
val x:Int = if (j.has("mykey"){
j["mykey"] as Int
}else {
0
}
如果执行val x:Int = j["mykey"] as Int
时未进行检查,则会抛出异常。
是否有更多的 在没有冒险引发异常的情况下获取j["mykey"]
类型的好方法是什么?
答案 0 :(得分:4)
您应该optInt (String name, int fallback)完成任务。
public int optInt (String name, int fallback)
返回按名称映射的值(如果存在)并且是int或可以是 强制转换为整数,否则转换为后退
您的代码将是
val x: Int = j.optInt("mykey", 0)
答案 1 :(得分:2)
您可以像在Java中使用is
一样使用instanceof
-
if (j.has("mykey"){
val myValue = j["mykey"]
if(myValue is Int){
//Use myValue here
}
}