gpt4 book ai didi

java - JsonPath NoClassDefFoundError,或 Java 中 JsonPath 的替代品

转载 作者:搜寻专家 更新时间:2023-10-30 20:56:22 27 4
gpt4 key购买 nike

由于与我正在从事的项目相关的原因,我希望将对 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" +
"}";

最佳答案

如果您正在使用 MavenGradle,只需将其添加到您的依赖项列表中:

对于 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com