使用JXPathContext/java通过Xpath解析json对象

使用JXPathContext/java通过Xpath解析json对象,java,json,xpath,Java,Json,Xpath,我想用java中的xpath解析json对象。我尝试了以下方法: JSONObject obj=new-JSONObject(“{”firstName\”:“John\”,“lastName\”:“doe\”,“age\”:26,““address\”:{”streetAddress\“:“naiststreet\”,“city\”:“Nara\”,“postalCode\”:“630-0192\”,“phoneumbers\”:[{{type\”:“type\”:“iPhone\”,“num

我想用java中的xpath解析json对象。我尝试了以下方法:

JSONObject obj=new-JSONObject(“{”firstName\”:“John\”,“lastName\”:“doe\”,“age\”:26,““address\”:{”streetAddress\“:“naiststreet\”,“city\”:“Nara\”,“postalCode\”:“630-0192\”,“phoneumbers\”:[{{type\”:“type\”:“iPhone\”,“number\”,“number\”:“0123-4567-8888\”,“type\”,“home\”:“home\”,“:“home\”,“home\”,“home\”,“home\”,“home\”,“:”,“:”,“:”,“:”,“,”,“,”,”,“;
JXPathContext=JXPathContext.newContext(obj);

迭代器i=context.iterate(“phoneNumbers[0]/type”)正如注释中强调的,XPath是错误的,因为索引以1开头

第二个技巧是对JSONObject调用“toMap”。 JXPath不知道如何处理JSONObject,但可以处理映射

JSONObject obj=new-JSONObject(“{”firstName\”:“John\”,“lastName\”:“doe\”,“age\”:26,““address\”:{”streetAddress\“:“naiststreet\”,“city\”:“Nara\”,“postalCode\”:“630-0192\”,“phoneumbers\”:[{{type\”:“type\”:“iPhone\”,“number\”,“number\”:“0123-4567-8888\”,“type\”,“home\”:“home\”,“:“home\”,“home\”,“home\”,“home\”,“home\”,“:”,“:”,“:”,“:”,“,”,“,”,”,“;
JXPathContext=JXPathContext.newContext(obj.toMap());
迭代器i=context.iterate(“phoneNumbers[1]/type”);

这是关于XPath还是关于JsonPath?XPath会更好。但是使用JsonPath也可以。我不知道API,但是使用XPath时,索引以
1
开始,而不是以
0
开始,所以假设XPath约定路径应该是
phoneNumbers[1]/type