Java 使用Jackson从JSON树中的特定节点映射对象
是否可以让Jackson的Java 使用Jackson从JSON树中的特定节点映射对象,java,json,jackson,Java,Json,Jackson,是否可以让Jackson的ObjectMapper仅从JSON树中的特定节点(和“向下”)解组 用例是一种可扩展的文档格式。我想遍历这棵树,然后将当前路径发布到一组可扩展的插件,以查看用户是否正在使用和插件,这些插件知道如何处理文档的这一部分 我希望插件作者不必处理JsonNode或流式API的低级细节;相反,只需传递一些上下文和特定的JsonNode,然后就可以使用可爱而方便的ObjectMapper来解组其类的实例,将节点作为树的根进行传递。考虑以下JSON: { “名字”:“约翰”, “姓
ObjectMapper
仅从JSON树中的特定节点(和“向下”)解组
用例是一种可扩展的文档格式。我想遍历这棵树,然后将当前路径发布到一组可扩展的插件,以查看用户是否正在使用和插件,这些插件知道如何处理文档的这一部分
我希望插件作者不必处理
JsonNode
或流式API的低级细节;相反,只需传递一些上下文和特定的JsonNode
,然后就可以使用可爱而方便的ObjectMapper
来解组其类的实例,将节点作为树的根进行传递。考虑以下JSON:
{
“名字”:“约翰”,
“姓氏”:“能源部”,
“地址”:{
“街道”:“第二街21号”,
“城市”:“纽约”,
“postalCode”:“10021-3100”,
“坐标”:{
“纬度”:40.7250387,
“经度”:-73.9932568
}
}
}
并考虑将“代码>坐标”//COD>节点解析为以下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号”“纽约市”“邮政编码”“10021-3100”“,”
+“\”坐标\“:{\”纬度\“:40.7250387,\”经度\“:-73.9932568}}”;
ObjectMapper mapper=新的ObjectMapper();
JsonNode=mapper.readTree(json);
然后使用查询坐标
节点,并使用将其解析为坐标
类:
JsonNode coordinates node=node.at(“/address/coordinates”);
坐标坐标=mapper.treeToValue(Coordinates节点,Coordinates.class);
JSON指针是遍历JSON的路径语言。有关更多详细信息,请查看。它从2.3版开始在Jackson中提供。听起来就像这样:这正是我想要的!一旦我有机会实施赏金,我就会奖励它。我会说,
node.get(“address”)
对于这种情况更简单/更有效。@shmosel当然是这样。但这里的要点是可用于查询节点的JSON路径。我提供的JSON示例非常简单,我们看不到使用JSON路径的优势。@CássioMazzochiMolin,哦,我没有意识到这是一个人为的示例。答案更新为一个稍微复杂的示例。