【问题标题】:json parsing with jackson用杰克逊解析json
【发布时间】:2019-11-25 23:03:04
【问题描述】:

我正在使用Jackson library 将 JSON 字符串转换为 Java 对象

我的json是:

{  
   "human":{  
      "fname":"anjali",
      "lname":"malhotra"
   }
}

我希望将其转换为具有以下结构的 Java 类:

public class Human
{
  String fname;
  String lname;
}

我可以成功转换成

public class HumanWrapper
{
  Human human;
}

但是,我想知道是否有一种方法可以直接将其转换为人类格式。我阅读了有关自定义反序列化的信息,但不愿意采用这种方法。

【问题讨论】:

标签: java json jackson nested


【解决方案1】:

你需要有一个 HumanWrapper 类,因为你的人类对象是在你的 json 对象中定义的

{
    "human": {
    }
}

如果您能够更改您的 API 以仅发送这样的 human 对象

{  
  "fname":"anjali",
  "lname":"malhotra"
}

那你就不用HumanWrapper

【讨论】:

  • 在我组织的当前框架中,无法更改 API 响应。而且我觉得为此添加包装器可能不是最好的方法
【解决方案2】:

您可以通过将 ObjectMapper 配置为使用 DeserializationFeature.UNWRAP_ROOT_VALUE 来实现此目的:

ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);

并使用 @JsonRootName 注释来注释您的 Human 类:

@JsonRootName("human")
public class Human {
....
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-27
  • 1970-01-01
  • 2022-07-21
  • 2021-11-01
  • 1970-01-01
  • 2013-12-29
  • 2014-08-22
相关资源
最近更新 更多