如何使用Jackson对以下json进行反序列化

Rup*_*tes 6 java json jackson

我有以下json:

{
  "id":"myid",
  "fields":{
    "body":"text body"
    }
}
Run Code Online (Sandbox Code Playgroud)

我想反序列化到以下Java类:

class TestItem {
private String id;
private String body;

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getBody() {
    return body;
}

public void setBody(String body) {
    this.body = body;
}
Run Code Online (Sandbox Code Playgroud)

使用Jackson Json解串器.这不起作用,因为该body字段嵌套在fields内部类中.

我无法改变json结构,所以有什么方法(也许使用注释)我可以重新映射body字段TestItem.fields.bodyTestItem.body

编辑: 我应该说这是一个更大的类层次结构的一部分,练习的目的是减少它的深度.换句话说,我知道我可以声明一个内部类然后访问它,但这不是我想要实现的.

Sta*_*Man 5

有几个功能请求(如果实现)将允许有限的一级包装/解包.但目前没有声明的方法来做到这一点.并且在某种程度上它是边缘情况,因为这进入数据转换而不是数据绑定(遗憾的是我不能想到好的对象转换库,因此可能存在一些差距).

那么,通常做的是进行两阶段绑定:首先进入中间类型(通常是java.util.Map,或者是jackson JsonNode(树模型)); 修改那些,然后从这种类型转换为实际结果.例如这样的事情:

JsonNode root = mapper.readTree(jsonSource);
// modify it appropriately (add, remove, move nodes)
MyBean bean = mapper.convertValue(root, MyBean.class);
Run Code Online (Sandbox Code Playgroud)