繁体   English   中英

使用Jackson开始在嵌套JSON对象中进行解析

[英]Start Parsing within Nested JSON Object with Jackson

我具有以下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);

您的JSON格式应为:

{
  "uri": {
    "firstname": "Peter",
    "lastname": "Griffin",
    "age": 42,
  }
}

您的方法将不起作用,因为您尝试一次获取整个json对象,而不首先获取特定的节点。

不用使用mapper构造函数加载json,而是以其他方式获取json。 我将使用URLHTTPURLConnection从网络获取json字符串。

拥有json字符串后,请使用以下命令:

 ObjectMapper objectMapper = new ObjectMapper();
 JsonNode rootNode = objectMapper.readTree(json);

获取uri表示的json节点,如下所示:

JsonNode uriNode = rootNode.get("uri");

然后才发送要解析的节点,如下所示:

杰克逊2.4

Uri uri = objectMapper.treeToValue(uriNode, Uri.class);

在Jackson 2.4之前

Uri uri = objectMapper.readValue(uriNode, Uri.class);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM