0

我正在使用 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)

此异常似乎来自 jar 类的 FieldFilter。

4

2 回答 2

2

如果我理解正确并且您的 catch 块没有被执行,那么您必须捕获 Java 7java.nio.file.InvalidPathException而不是JsonPath's com.jayway.jsonpath.InvalidPathException

仔细检查你的import陈述。

于 2013-08-30T19:45:18.837 回答
0

库根据以下代码出现无效路径异常(taken from grepcode)

if (jsonPath == null || jsonPath.trim().isEmpty() || jsonPath.matches("new ") 
       || jsonPath.matches("[^\\?\\+\\=\\-\\*\\/\\!]\\(")) {

       throw new InvalidPathException("Invalid path");

 }

所以我认为你应该打印 jsonPath 并将其与上述条件匹配。

于 2013-08-30T19:57:08.397 回答