Котлин: Проверьте, существует ли ключ JSONObject - PullRequest
1 голос
/ 23 октября 2019

Я хочу проверить, существует ли запись в моем JSONObject и является ли она тем типом, которым следует избегать исключения при использовании.

Я обнаружил, что на мой вопрос почти есть ответдля Java Проверьте, существует ли ключ JSONObject для использования оператора 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 ]

4 голосов
/ 23 октября 2019

Вы должны optInt (String name, int fallback) для выполнения своей задачи.

public int optInt (String name, int fallback)

Возвращает значение, отображаемое по имени, если оно существует и является целымили может быть приведен к int или в противном случае -

Ваш код будет

val x: Int = j.optInt("mykey", 0)
2 голосов
/ 23 октября 2019

Вы можете использовать is точно так же, как instanceof в Java -

if (j.has("mykey"){
    val myValue = j["mykey"]
    if(myValue is Int){
        //Use myValue here
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...