如何解析JSON布尔值?

med*_*eda 16 java android json boolean

我有一个JSON对象

JSONObject jsonObject = new JSONObject();
Run Code Online (Sandbox Code Playgroud)

我能够成功填充对象但是,当我尝试解析booleanJSON值时,我收到一个错误:

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");
Run Code Online (Sandbox Code Playgroud)

我的JSON对象图很简单,布尔值作为BIT字段存储在我的数据库中(0或1)

我该如何解决这个问题?

这是我的JSON:

{
    "ACCOUNT_EXIST": 1,
    "MultipleContacts": 0
}
Run Code Online (Sandbox Code Playgroud)

Mat*_*all 24

布尔值不是整数; 1并且0不是Java中的布尔值.您需要明确地转换它们:

boolean multipleContacts = (1 == jsonObject.getInt("MultipleContacts"));
Run Code Online (Sandbox Code Playgroud)

或者从一开始就将整数序列化为布尔值.

  • 认为它会是'0!=`[...].至少它几乎是所有语言. (7认同)
  • 更确切地说"与许多C派生语言不同,在Java中,布尔值不是整数......" (4认同)

VM4*_*VM4 18

试试这个:

{
    "ACCOUNT_EXIST": true,
    "MultipleContacts": false
}
Run Code Online (Sandbox Code Playgroud)

  • 我无法改变我的JSON (3认同)