27

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
}
4

4 に答える 4

37

これを試して:

{
    "ACCOUNT_EXIST": true,
    "MultipleContacts": false
}
于 2013-08-28T19:16:31.300 に答える
34

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

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

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

于 2013-08-28T19:16:29.140 に答える
1

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

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

文字列の場合は、次のようにすることができます。

boolean multipleContacts = "1".equals(jsonObject.get("MultipleContacts"))
于 2013-08-28T19:16:43.073 に答える