Kotlin:检查JSONObject密钥是否存在

时间:2019-10-23 03:34:10

标签: android kotlin

我想检查我的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时未进行检查,则会抛出异常。

是否有更多的 kotlin >方式来执行此检查?

在没有冒险引发异常的情况下获取j["mykey"]类型的好方法是什么?

2 个答案:

答案 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
    }
}