在代码的某个时刻,我已经将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']