web-dev-qa-db-fra.com

Comment analyser la valeur booléenne JSON?

J'ai un objet JSON

JSONObject jsonObject = new JSONObject();

Je parviens à renseigner l'objet, mais lorsque j'essaie d'analyser une valeur JSON boolean, une erreur se produit:

08-28 15: 06: 15.809: E/Buffer Error (31857): erreur lors de la conversion du résultat Java.lang.ClassCastException: Java.lang.Integer ne peut pas être converti en Java.lang.Boolean

Je le fais comme ça:

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

Mon graphe d'objet JSON est très simple, le booléen est stocké dans ma base de données sous forme de champ BIT (0 ou 1)

Comment résoudre ce problème?

Voici mon JSON:

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

Un booléen n'est pas un entier; 1 et 0 ne sont pas des valeurs booléennes en Java. Vous aurez besoin de les convertir explicitement:

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

ou sérialisez les ints en tant que booléens depuis le début.

21
Matt Ball

Essaye ça:

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

Vous pouvez convertir cette valeur en booléen de manière très simple: en la comparant avec la valeur entière 1, comme ceci:

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

Si c'est une chaîne, vous pouvez faire ceci:

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

Essaye ça:

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

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