如何解决在 Java 中使用 Jackson 解包嵌套的 JSON 值的最简洁方法是什么?
我有一个看起来像这样的 JSON(为了举例,字段数量大大减少):
{
"content": {
"id": {"content": "1"},"param1": {"content": "A"},"param2": {"content": "55"}
}
}
请记住,我无法控制它,也无法更改它,这就是我从 API 中获得的。
我为此创建了一个 POJO 类,如下所示:
public class PojoClass {
private String id;
private String param1;
private String param2;
// getters and setters
}
然后我用 Jackson 解析 JSON(我必须使用它,请不要建议 GSON 或其他):
ObjectMapper om = new ObjectMapper();
JsonNode jsonNode = om.readTree(json).get("content");
PojoClass table = om.readValue(jsonNode.toString(),PojoClass.class);
这行不通,因为 id、param1 和 param2 中包含 JSON,而不是直接值。该代码在 JSON 中运行良好,如下所示:
{
"content": {
"id": "1","param1": "A","param2": "55"
}
}
但不幸的是,我需要的值存储在“内容”字段下。
我知道我可以对此进行硬编码并在构造函数或其他东西中将所有值一个一个地提取到变量中,但是它们有很多,而不是像本示例中的 3 个,显然这不是正确的方法.
解决方法
您可以将 json 字符串中的 JsonNode
元素(如 "id": {"content": "1"}
)修改为 {"id": "1"}
,使用迭代器将它们作为 ObjectNode
元素访问,然后反序列化获得的新 json {{ 1}} 如下所示:
{"id":"1","param1":"A","param2":"55"}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。