meda
meda

Reputation: 45500

How to parse JSON boolean value?

I have a JSON object

JSONObject jsonObject = new JSONObject();

I'm able to populate the object successfully but, when I try to parse a boolean JSON value I get an error:

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

I do it like this:

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

My JSON object graph is very simple, the boolean is stored in my database as BIT field (0 or 1)

How do I solve this ?

Here is my JSON:

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

Upvotes: 40

Views: 267636

Answers (4)

jomaac
jomaac

Reputation: 31

Try this:

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

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

Upvotes: 3

VM4
VM4

Reputation: 6499

Try this:

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

Upvotes: 57

Mauren
Mauren

Reputation: 1975

You can cast this value to a Boolean in a very simple manner: by comparing it with integer value 1, like this:

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

If it is a String, you could do this:

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

Upvotes: 1

Matt Ball
Matt Ball

Reputation: 359966

A boolean is not an integer; 1 and 0 are not boolean values in Java. You'll need to convert them explicitly:

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

or serialize the ints as booleans from the start.

Upvotes: 37

Related Questions