杰克逊 - 杰森解析不太好

时间:2014-02-03 10:28:38

标签: java android json jackson

在我的json示例中,我遇到了问题,我无法解决它。

让我假装我有班级城市

class City {
int id;
int name;
Address address
}

有时从服务器到地址(即address_id,address_name ....)但在特定情况下没有地址时服务器返回false布尔值。

我尝试解析jsonObject

City city = new ObjectMapper().readValue(response.toString(), City.class);

地址返回一些数据,没关系。但是当地址返回false布尔值时我得到了这个错误

com.fasterxml.jackson.databind.JsonMappingException: Can not instantiate value of type from Boolean value

有什么方法可以解决这个问题吗?

案例1。

{
  "isLogin": false,
  "totalSum": 0,
  "addressCount": 0,
  "address": false, 
}

案例2。

{
  "isLogin": false,
  "totalSum": 378,
  "addressCount": 1,
  "address": {
    "id": "1127",
    "name": "New York",   
}

2 个答案:

答案 0 :(得分:0)

Jackson正在等待地址对象而不是布尔值。尝试返回null而不是false。

答案 1 :(得分:0)

使用自定义反序列化器可以在这里工作。 您为City类型定义一个,如果读取地址的第一个事件为false,则将地址设置为null,如果它是START_OBJECT,则委托给Jackson地址类型的反序列化。