如何将JsonNode实例转换为实际的pojo



在代码的某个时刻,我已经将JSON文档(表示为字符串(解析为JsonNode,因为我还不知道实际的目标pojo类类型。

现在,一段时间后,我知道了pojo的Class实例,我想将这个JsonNode转换为该类的实际pojo(用适当的@JsonProperty注释进行注释(。这能做到吗?如果是,如何?

我与Jackson 2.10.x.合作

在这种情况下,您可以使用两种方法:

  • treeToValue
  • convertValue

参见以下示例:

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.util.StringJoiner;
public class JsonNodeConvertApp {
public static void main(String[] args) throws Exception {
File jsonFile = new File("./resource/test.json").getAbsoluteFile();
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(jsonFile);
System.out.println(mapper.treeToValue(node, Message.class));
System.out.println(mapper.convertValue(node, Message.class));
}
}
class Message {
private int id;
private String body;
// getters, setters, toString
}

JSON有效载荷的上述代码如下:

{
"id": 1,
"body": "message body"
}

打印:

Message[id=1, body='message body']
Message[id=1, body='message body']

最新更新