我正在使用JsonPath并且能够解析我的数据并在提供的路径正确时获取值。
但是当我提供不正确的路径(用户输入)时,程序终止。我不希望这种情况发生。反正我有没有抓住这个例外并继续下一步呢?
try
{
String value = JsonPath.read(jsonText, jsonPath);
System.out.println(value);
}
catch(InvalidPathException e)
{
System.out.println("ERROR<InvalidPathException>: "+e.getMessage());
}
我的无效路径出现以下错误:
Exception in thread "main" com.jayway.jsonpath.InvalidPathException: invalid path
at com.jayway.jsonpath.internal.filter.FieldFilter.filter(FieldFilter.java:59)
at com.jayway.jsonpath.JsonPath.read(JsonPath.java:182)
at com.jayway.jsonpath.JsonPath.read(JsonPath.java:202)
at com.jayway.jsonpath.JsonPath.read(JsonPath.java:307)
at office.jsonPathparse.main(jsonPathparse.java:37)
这个异常似乎来自FieldFilter,它是jar的类。
答案 0 :(得分:2)
如果我理解正确并且你的catch块没有被执行,你必须抓住Java 7的java.nio.file.InvalidPathException
而不是JsonPath
的{{1}}。
仔细检查com.jayway.jsonpath.InvalidPathException
声明。
答案 1 :(得分:0)
库基于以下代码(taken from grepcode)
if (jsonPath == null || jsonPath.trim().isEmpty() || jsonPath.matches("new ")
|| jsonPath.matches("[^\\?\\+\\=\\-\\*\\/\\!]\\(")) {
throw new InvalidPathException("Invalid path");
}
所以我认为你应该打印jsonPath并将其与上述条件匹配。