Java JsonPath-对于一个DocumentContext,如何使用默认配置和选项.AS\u PATH\u列表进行查询?

Java JsonPath-对于一个DocumentContext,如何使用默认配置和选项.AS\u PATH\u列表进行查询?,java,jsonpath,Java,Jsonpath,我有一个JSON文件,需要对其进行多次查询。因此,我创建了一个DocumentContext(因此我有1个解析)来调用上的read() 但是,在某些情况下,我希望返回的结果是Option.AS\u PATH\u LIST,而在其他情况下,我希望返回默认结果。有办法做到这一点吗 或者我需要构建2个DocumentContext对象吗 谢谢-dave如果您编译了一个JsonPath,那么您可以将一个配置传递给read方法,如javadoc中所示 String json = "{\"a\":\"b\"

我有一个JSON文件,需要对其进行多次查询。因此,我创建了一个DocumentContext(因此我有1个解析)来调用上的read()

但是,在某些情况下,我希望返回的结果是Option.AS\u PATH\u LIST,而在其他情况下,我希望返回默认结果。有办法做到这一点吗

或者我需要构建2个DocumentContext对象吗


谢谢-dave

如果您编译了一个JsonPath,那么您可以将一个配置传递给read方法,如javadoc中所示

String json = "{\"a\":\"b\"}";
Object parse = Configuration.defaultConfiguration()
  .jsonProvider()
  .parse(json);
JsonPath path = JsonPath.compile("$.a");
System.out.println(path.read(parse, Configuration.builder().options(Option.AS_PATH_LIST).build()));
System.out.println(path.read(parse));

这看起来不错,但请澄清一下。我切换到使用DocumentContext.read(查询)。您将演示如何编译查询,然后使用path.read(parse)。每种方法的目的是什么?(我对你的方法很在行,我只是想更好地理解这个库。)看起来DocumentContext给了你一些好处,比如缓存编译的json路径,它可以为你处理json到对象的映射。这是一个更高级别的接口,隐藏了一些关于如何使用路径的细节。缺点是,看起来没有办法改变上下文的配置,它是不可变的。您无权访问JsonPath上的完整方法集。DocumentContext api看起来更简单,并且向您提供的类更少,这取决于您的需要。使用编译后的JSONPATH可以实现完全控制。