Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Jackson反序列化以下json_Java_Json_Jackson - Fatal编程技术网

Java 如何使用Jackson反序列化以下json

Java 如何使用Jackson反序列化以下json,java,json,jackson,Java,Json,Jackson,我有以下json: { "id":"myid", "fields":{ "body":"text body" } } 我想将其反序列化为以下Java类: class TestItem { private String id; private String body; public String getId() { return id; } public void setId(String id) { this.id = id; } public S

我有以下json:

{
  "id":"myid",
  "fields":{
    "body":"text body"
    }
}
我想将其反序列化为以下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;
}
使用Jackson Json反序列化程序。这不起作用,因为
主体
字段嵌套在
字段
内部类中

我无法更改json结构,因此是否有任何方法(可能使用注释)可以将
body
字段从
TestItem.fields.body
重新映射到
TestItem.body

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

有几个功能请求(如果实现的话)将允许有限的一级包装/展开。但目前还没有声明性的方法来实现这一点。在某种程度上,这是边缘情况,因为这是数据转换,而不是数据绑定(不幸的是,我想不出好的对象转换libs,所以可能有点差距)

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

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

如何使用流式API读取相同的内容?