java – 使用杰克逊从JSON树中的特定节点映射对象
发布时间:2020-05-24 17:34:31 所属栏目:Java 来源:互联网
导读:Jackson的ObjectMapper是否可以从 JSON树中的特定节点(和“down”)取消编组? 用例是可扩展的文档格式.我想走树,然后将当前路径发布到可扩展的插件集,以查看用户是否正在使用,以及知道该文档该部分应该怎么做的插件. 我想让插件作者不必处理JsonNode或流API的
|
Jackson的ObjectMapper是否可以从 JSON树中的特定节点(和“down”)取消编组? 用例是可扩展的文档格式.我想走树,然后将当前路径发布到可扩展的插件集,以查看用户是否正在使用,以及知道该文档该部分应该怎么做的插件. 我想让插件作者不必处理JsonNode或流API的低级细节;相反,只是传递一些上下文和一个特定的JsonNode,然后可以使用可爱和方便的ObjectMapper来解组他们的类的实例,考虑以树的根传递的节点. 解决方法考虑以下JSON:{
"firstName": "John","lastName": "Doe","address": {
"street": "21 2nd Street","city": "New York","postalCode": "10021-3100","coordinates": {
"latitude": 40.7250387,"longitude": -73.9932568
}
}
}
并且考虑您要将坐标节点解析为以下Java类: public class Coordinates {
private Double latitude;
private Double longitude;
// Default constructor,getters and setters omitted
}
要做到这一点,将整个JSON解析为 String json = "{"firstName":"John","lastName":"Doe","address":{"street":"
+ ""21 2nd Street","city":"New York","postalCode":"10021-3100","
+ ""coordinates":{"latitude":40.7250387,"longitude":-73.9932568}}}";
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(json);
然后使用JSON Pointer查询坐标节点,并使用 JsonNode coordinatesNode = node.at("/address/coordinates");
Coordinates coordinates = mapper.treeToValue(coordinatesNode,Coordinates.class);
JSON指针是一种遍历JSON的路径语言.有关更多详细信息,请查看RFC 6901.自2.3版本起,它在Jackson中可用. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
