web-dev-qa-db-ja.com

JSONブール値を解析する方法は?

JSONオブジェクトがあります

JSONObject jsonObject = new JSONObject();

オブジェクトを正常に取り込むことができますが、boolean JSON値を解析しようとするとエラーが発生します。

08-28 15:06:15.809:E/Buffer Error(31857):結果の変換エラーJava.lang.ClassCastException:Java.lang.IntegerをJava.lang.Booleanにキャストできません

私はこのようにします:

boolean multipleContacts = (Boolean) jsonObject.get("MultipleContacts");

私のJSONオブジェクトグラフは非常にシンプルで、ブール値はBITフィールド(0または1)としてデータベースに保存されます

これをどうやって解決しますか?

ここに私のJSONがあります:

{
    "ACCOUNT_EXIST": 1,
    "MultipleContacts": 0
}
15
meda

ブール値は整数ではありません。 1および0はJavaのブール値ではありません。それらを明示的に変換する必要があります。

boolean multipleContacts = (1 == jsonObject.getInt("MultipleContacts"));

または intを最初からブール値としてシリアル化します。

22
Matt Ball

これを試して:

{
    "ACCOUNT_EXIST": true,
    "MultipleContacts": false
}
17
VM4

この値を非常に簡単な方法でブール値にキャストできます。次のように整数値1と比較することにより、

boolean multipleContacts = new Integer(1).equals(jsonObject.get("MultipleContacts"))

文字列の場合、これを行うことができます:

boolean multipleContacts = "1".equals(jsonObject.get("MultipleContacts"))
2
Mauren

これを試して:

{
    "ACCOUNT_EXIST": true,
    "MultipleContacts": false
}

boolean success ((Boolean) jsonObject.get("ACCOUNT_EXIST")).booleanValue()
0
jomaac