我想在java中通过xpath解析一个json对象。我已经尝试过以下方式:
JSONObject obj=new JSONObject("{\"firstName\":\"John\",\"lastName\":\"doe\",\"age\":26,\"address\":{\"streetAddress\":\"naiststreet\",\"city\":\"Nara\",\"postalCode\":\"630-0192\"},\"phoneNumbers\":[{\"type\":\"iPhone\",\"number\":\"0123-4567-8888\"},{\"type\":\"home\",\"number\":\"0123-4567-8910\"}]}");
JXPathContext context = JXPathContext .newContext(obj);
Iterator i=context.iterate("phoneNumbers[0]/type");
但我发现上述方法不起作用,因为迭代器不包含任何东西。 谁能告诉我这里是否有任何错误? 另外,如果有任何其他更好的方法通过xpath解析json对象,有谁能告诉我。
答案 0 :(得分:0)
正如注释中突出显示的那样,由于索引从1开始,XPath是错误的。
第二个技巧是在JSONObject上调用“ toMap”。 JXPath不知道如何处理JSONObject,但是可以处理地图。
JSONObject obj=new JSONObject("{\"firstName\":\"John\",\"lastName\":\"doe\",\"age\":26,\"address\":{\"streetAddress\":\"naiststreet\",\"city\":\"Nara\",\"postalCode\":\"630-0192\"},\"phoneNumbers\":[{\"type\":\"iPhone\",\"number\":\"0123-4567-8888\"},{\"type\":\"home\",\"number\":\"0123-4567-8910\"}]}");
JXPathContext context = JXPathContext .newContext(obj.toMap());
Iterator i=context.iterate("phoneNumbers[1]/type");