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
}
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.
Essaye ça:
{
"ACCOUNT_EXIST": true,
"MultipleContacts": false
}
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"))
Essaye ça:
{
"ACCOUNT_EXIST": true,
"MultipleContacts": false
}
boolean success ((Boolean) jsonObject.get("ACCOUNT_EXIST")).booleanValue()