如何在Java中使用JsonPath从JSON中获取值?

如何在Java中使用JsonPath从JSON中获取值?,java,json,jsonpath,Java,Json,Jsonpath,我想使用JsonPath从JSON对象中获取值。请任何人建议我需要合适的JAR,因为据我所知,我在JsonPath中使用的JAR存在此异常 package jsonPg; import java.io.IOException; import org.json.JSONException; import org.json.JSONObject; import com.jayway.jsonpath.JsonPath; public class ReadJsonPath { sta

我想使用JsonPath从JSON对象中获取值。请任何人建议我需要合适的JAR,因为据我所知,我在JsonPath中使用的JAR存在此异常

package jsonPg;

import java.io.IOException;

import org.json.JSONException;
import org.json.JSONObject;

import com.jayway.jsonpath.JsonPath;

public class ReadJsonPath {

    static String file = "D:\\AutomationSample\\Sample_Json.txt";

    public static void main(String[] args) throws JSONException, IOException {
        JsonReadFile jsonReadFile=new JsonReadFile();
        JSONObject jsonObj=jsonReadFile.parseJSONFile(file);
        String jsonObject=jsonObj.toString();
        String json="";
        System.out.println(jsonObject);
//      Object val = JsonPath.read(jsonObject,"");
        String val1=JsonPath.read(jsonObject," $.payload[*].supplierDataMap[*].COMPANYDETAILS.customFieldList[*].DISPLAYGSID   .value");
        System.out.println(val1);

     }

 }
下面是我编写的代码,下面是运行时抛出的异常

    Exception in thread "main" java.lang.NoSuchFieldError: FACTORY_SIMPLE
     at com.jayway.jsonpath.spi.impl.JsonSmartJsonProvider.<init>(JsonSmartJsonProvider.java:38)
at com.jayway.jsonpath.spi.impl.JsonSmartJsonProvider.<init>(JsonSmartJsonProvider.java:41)
at com.jayway.jsonpath.spi.JsonProviderFactory.<clinit>  (JsonProviderFactory.java:24)
at    com.jayway.jsonpath.Configuration.defaultConfiguration(Configuration.java:62)
at com.jayway.jsonpath.internal.JsonReader.<init>(JsonReader.java:26)
at com.jayway.jsonpath.JsonPath.read(JsonPath.java:462)
at jsonPg.ReadJsonPath.main(ReadJsonPath.java:27)`
线程“main”java.lang.NoSuchFieldError中的异常:工厂\u简单 在com.jayway.jsonpath.spi.impl.JsonSmartJsonProvider.(JsonSmartJsonProvider.java:38) 位于com.jayway.jsonpath.spi.impl.jsonsmart-jsonprovider.(jsonsmart-jsonprovider.java:41) 请访问com.jayway.jsonpath.spi.JsonProviderFactory。(JsonProviderFactory.java:24) 位于com.jayway.jsonpath.Configuration.defaultConfiguration(Configuration.java:62) 位于com.jayway.jsonpath.internal.JsonReader.(JsonReader.java:26) 位于com.jayway.jsonpath.jsonpath.read(jsonpath.java:462) 位于jsonPg.ReadJsonPath.main(ReadJsonPath.java:27)` 任何形式的帮助都将不胜感激。
提前感谢。

您可以通过
JsonPath
库自己实现您的目标。以下是一个例子:

    String jsonString = "{ \"list\": [ { \"name\": \"foo1\"}, { \"name\": \"foo2\"} ]}";
    DocumentContext docCtx = JsonPath.parse(jsonString);
    JsonPath jsonPath = JsonPath.compile("$.list[?(@.name == \"foo1\")]");
    JSONArray val1=docCtx.read(jsonPath);
    System.out.println(val1);
此代码将打印出来:

[{"name":"foo1"}]
所需的maven依赖项:

<dependency>
    <groupId>com.jayway.jsonpath</groupId>
    <artifactId>json-path</artifactId>
    <version>2.2.0</version>
</dependency>

你检查过你的路线了吗?这可以使用许多在线工具中的一个来完成,例如,是的,我已经检查了jsonPath。它工作正常。。我只需要在java代码中实现这一点,你可以共享json吗?
<dependency>
    <groupId>net.minidev</groupId>
    <artifactId>json-smart</artifactId>
    <version>2.2.1</version>
</dependency>
   String jsonString = "{ \"list\": [ { \"name\": \"foo1\"}, { \"name\": \"foo2\"} ]}";
    DocumentContext docCtx = JsonPath.parse(jsonString);
    JsonPath jsonPath = JsonPath.compile("$.list[?(@.name == foo1)]");
    JSONArray val1=docCtx.read(jsonPath);
    System.out.println(val1);