用杰克逊解析json

时间:2019-07-17 07:07:24

标签: java json jackson nested

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

我的json是:

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

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

public class Human
{
  String fname;
  String lname;
}

我可以成功将其转换为

public class HumanWrapper
{
  Human human;
}

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

2 个答案:

答案 0 :(得分:1)

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

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

并使用@JsonRootName注释对Human类进行注释:

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

答案 1 :(得分:0)

您需要具有HumanWrapper类,因为您的人类对象是在json对象中定义的

{
    "human": {
    }
}

如果您能够更改API以仅发送一个human对象,例如

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

那么您就不必为HumanWrapper

而烦恼了。
相关问题