- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
由于与我正在从事的项目相关的原因,我希望将对 JSON 文件的整个查询保存为一个字符串,例如,$.store.book[*].title
(而不是必须将文档的每个级别临时存储为单独的对象)。
我目前正在使用 JsonPath(版本 0.8.0,这是我能找到的最新版本),这基本上正是我正在寻找的,但我遇到了如下所示的异常。我只是使用 JsonPath 谷歌代码页上给出的示例 JSON,使用他们的示例查询之一。
我在这里做错了什么?或者,如果没有解决方案,Java 中是否有 JsonPath 的替代方案?我希望能够将整个查询作为字符串传递,并且它必须使用 Java。
函数:
public void testJsonPath() throws Exception
{
String query = "$.store.book[*].title";
List toRet = (List) JsonPath.read(practiceJson, query, new Filter[0]);
System.out.println(toRet.toString());
}
异常:
java.lang.NoClassDefFoundError: net/minidev/json/parser/ParseException
at com.jayway.jsonpath.spi.JsonProviderFactory$1.create(JsonProviderFactory.java:27)
at com.jayway.jsonpath.spi.JsonProviderFactory.createProvider(JsonProviderFactory.java:32)
at com.jayway.jsonpath.JsonPath.read(JsonPath.java:202)
at com.jayway.jsonpath.JsonPath.read(JsonPath.java:307)
at net.windward.datasource.test.TestJsonDataSource.testJsonPath(TestJsonDataSource.java:119)
实践JSON:
private String practiceJson = "{\n" +
" \"store\": {\n" +
" \"book\": [ {\n" +
" \"category\": \"reference\",\n" +
" \"author\": \"Nigel Rees\",\n" +
" \"title\": \"Sayings of the Century\",\n" +
" \"price\": 8.95\n" +
" }, {\n" +
" \"category\": \"fiction\",\n" +
" \"author\": \"Evelyn Waugh\",\n" +
" \"title\": \"Sword of Honour\",\n" +
" \"price\": 12.99\n" +
" }, {\n" +
" \"category\": \"fiction\",\n" +
" \"author\": \"Herman Melville\",\n" +
" \"title\": \"Moby Dick\",\n" +
" \"isbn\": \"0-553-21311-3\",\n" +
" \"price\": 8.99\n" +
" }, {\n" +
" \"category\": \"fiction\",\n" +
" \"author\": \"J. R. R. Tolkien\",\n" +
" \"title\": \"The Lord of the Rings\",\n" +
" \"isbn\": \"0-395-19395-8\",\n" +
" \"price\": 22.99\n" +
" } ],\n" +
" \"bicycle\": [ {\n" +
" \"color\": \"red\",\n" +
" \"price\": 19.95,\n" +
" \"style\": [ \"city\", \"hybrid\" ]\n" +
" }, {\n" +
" \"color\": \"blue\",\n" +
" \"price\": 59.91,\n" +
" \"style\": [ \"downhill\", \"freeride\" ]\n" +
" } ]\n" +
" }\n" +
"}";
最佳答案
如果您正在使用 Maven 或 Gradle,只需将其添加到您的依赖项列表中:
对于 Maven 项目:
在您的 Maven pom.xml 文件中:
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<version>2.2.0</version>
<scope>test</scope>
</dependency>
对于 Gradle 项目:
在 Gradle build.gradle 文件的 dependencies 部分
testCompile 'com.jayway.jsonpath:json-path:2.2.0'
它应该工作
关于java - JsonPath NoClassDefFoundError,或 Java 中 JsonPath 的替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17726282/
我想添加一个监视器来检测不健康的服务并在这种情况下发送警报。我公开了一个简单的 REST API - /healthy,它返回一个 JSON例如{“健康”:true}。 然后我向我的 site24x7
使用 JSONPath,如何从已知键列表中提取单个值? 例如,我想编写一个 JSON 路径表达式,可以从所有这三个 JSON 文档中提取 Sean: { "firstName": "Sean"} {
使用节点 JSONPath,如何从子节点值中获取父节点名称 { "store": { "book": [ { "id":"1", "author
使用ashphy json path evaluator ,以及以下 JSON: { "store": { "book": [ { "category": "reference",
JsonPath 是否支持 AND (&&) 运算符? 考虑以下 JsonPath 表达式: $.values[?(@.level=='First' && @.type == 'Sales')].se
我正在尝试使用 jsonPath 和 pick 函数来确定是否需要根据当前域运行规则。我正在做的事情的简化版本在这里: global { dataset shopscotchMerch
我正在尝试在 Nifi 中使用 EvaluateJsonPath 处理器,但在使用 jayway jsonpath 语法时遇到了问题。我的对象如下所示: {"text":"my stuff", "ta
我有一个实现问题... #!/usr/bin/python #This is the API for BTC price request. # Average all the amounts, and
我正在使用放心框架,并且在它内部,它有 JsonPath 类。JsonPath 的方法签名为 getList(String path, Class T); 我尝试做这样的事情: List myList
我有这个“内容”响应,我需要从中断言一些值。 WebTestClient.BodyContentSpec content = response.expectStatus().isOk()
我正在读取一个文件,其中 Json 数据可用。我需要创建一个方法,它需要 jsonobject、jsonpath、type我需要检查 jsonpath 的数据类型,输入...如果数据类型相同,则应返回
我在使用 Stefan Goessner 的 JsonPath 查找数组或列表大小时遇到问题。我使用的是 json-path-2.0.0 版本。 我的 jsonpath 表达式是 $.orders
由于与我正在从事的项目相关的原因,我希望将对 JSON 文件的整个查询保存为一个字符串,例如,$.store.book[*].title(而不是必须将文档的每个级别临时存储为单独的对象)。 我目前正在
我正在尝试使用 Spring Boot Test 为 rest 端点编写单元测试,但是当我尝试使用 jsonPath 对 json 响应中的对象进行断言时,即使在以下情况下也会抛出 Assertion
我安装了 jsonpath-rw 1.4.0 sudo apt-get install python-jsonpath-rw 它带有一个 /usr/bin/jsonpath。但这在使用过滤器表达式时给
我有AWS步骤机,并且其中一个步骤用于使用SNS服务通知失败。我想从input json中选择一些元数据到传出消息中。所以我试图用jsonpath连接常量字符串,如下所示 "Notify Failur
我有如下的json字符串 [ { "topic": "inputTopic", "key": "0", "message": "test",
有没有办法通过过滤以下 json 中的“d”来提取“a”值? [ { "a":1, "b":{ "c":11,"d":12 } }, { "a":2, "b
我发现理解如何编写一个 jsonpath 来告诉我该字段中是否存在某些值有点困难。 例如:考虑这个 json: { "firstName": "John", "lastName" : "doe
我有一种情况,我有一个 json 字符串,它有一个子元素作为只包含字符串的数组。有没有办法获取包含特定字符串的数组的对象引用。 例子: { "Books":{ "History":[
我是一名优秀的程序员,十分优秀!