【问题标题】:jackson - json parsing not working welljackson - json 解析不能正常工作
【发布时间】:2014-02-03 10:28:37
【问题描述】:

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

假设我有城市课

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

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

我尝试解析 jsonObject

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

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

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",   
}

【问题讨论】:

  • 你能显示你的response.toString()的内容吗? ?
  • 检查我编辑的答案

标签: java android json jackson


【解决方案1】:

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

【讨论】:

  • 是的,我知道,但我无法更改服务器端的任何代码
  • 那么你必须在绑定解析之前修改返回值。从响应中完全删除 '"address" : false' 应该可以。
【解决方案2】:

使用自定义反序列化器将在这里工作。 您为 City 类型定义一个,如果读取地址时的第一个事件为 false,那么您将 address 设置为 null,如果它是 START_OBJECT,您将委托杰克逊地址类型的反序列化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    相关资源
    最近更新 更多