我具有以下JSON结构:
{
"uri": {
"{{firstname}}": "Peter",
"{{lastname}}": "Griffin",
"{{age}}": 42
}
}
我想将其反序列化到我的Bean中:
public class Uri {
private String firstname;
private String lastname;
private int age;
/* getter and setter */
}
但是出现以下错误:
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "uri" (class com.abc.Uri), not marked as ignorable (3 known properties: "firstname", "lastname", "age")
所以我想,我需要将属性uri
放入。
有什么方法可以直接在uri
属性中开始解析吗?
更新:
这就是我读取JSON的方式:
ObjectMapper mapper = new ObjectMapper();
uri = mapper.readValue(new URL("test2.json"), Uri.class);
答案 0 :(得分:1)
您的JSON格式应为:
{
"uri": {
"firstname": "Peter",
"lastname": "Griffin",
"age": 42,
}
}
答案 1 :(得分:1)
您的方法将不起作用,因为您试图一次获取整个json对象,而没有首先获得一个特定的节点。
与其使用mapper构造函数加载json,而是以其他方式获取json。我会使用URL
和HTTPURLConnection
从网络上获取json字符串。
拥有json字符串后,请使用以下命令:
ObjectMapper objectMapper = new ObjectMapper();
JsonNode rootNode = objectMapper.readTree(json);
获取uri
表示的json节点,如下所示:
JsonNode uriNode = rootNode.get("uri");
然后仅发送要解析的节点,如下所示:
Uri uri = objectMapper.treeToValue(uriNode, Uri.class);
Uri uri = objectMapper.readValue(uriNode, Uri.class);