2013-08-28 100 views
11

我有一個JSON對象如何解析JSON布爾值?

JSONObject jsonObject = new JSONObject(); 

我能夠成功地填充對象,但是,當我試圖解析boolean JSON值我得到一個錯誤:

08-28 15:06:15.809: E/Buffer Error(31857): Error converting result java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Boolean

我這樣做此:

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

我的JSON對象圖很簡單,布爾被存儲在我的數據庫中作爲比特字段(0或1)

我該如何解決這個問題?

這裏是我的JSON:

{ 
    "ACCOUNT_EXIST": 1, 
    "MultipleContacts": 0 
} 
+0

那些不是布爾值。 JSON接受布爾值true和false。 –

回答

19

一個布爾值不是整數;在Java中,10不是布爾值。你需要將它們顯式轉換:

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

serialize the ints as booleans from the start.

+6

A認爲它會是'0!='[...]。至少它幾乎是所有語言。 –

+2

更準確地說:「與許多C語言派生語言不同,在Java中,布爾值不是整數...」 –

12

試試這個:

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

我無法更改我的JSON – meda

2

你可以在一個非常簡單的方式將該值轉換爲布爾:通過與比較整數值1,如下所示:

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

如果是字符串,則可以這樣做:

boolean multipleContacts = "1".equals(jsonObject.get("MultipleContacts")) 
+0

爲什麼這些比使用'JSONObject#getInt()'更好? –

+0

它確實不是 - 我只是給出了一個可以適用甚至不使用JSON的代碼的答案。 – Mauren