2017-05-05 6 views
3

私はJsonPathを使用してJSONオブジェクトから値を取得したいと思います。誰かが私に必要な適切なjarsを提案してください。ここ JavaでJsonPathを使用してJSONから価値を取得するにはどうすればよいですか?

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)` 

ランタイム

時にスローされる例外です。 ありがとうございます。

+0

した あなたのパスを確認しましたか?これは多くのオンラインツールの1つ、例えば[jsonpath.com](http://jsonpath.com/)。 –

+0

はい私はjsonPathを確認しました。それは正常に動作している..私はちょうどJavaコードでその仕事をする必要があります –

+0

多分あなたはjsonを共有することができますか? –

答えて

2

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> 

json-pathも自動的に引っ張ってくるjson-smart JAR:

<dependency> 
    <groupId>net.minidev</groupId> 
    <artifactId>json-smart</artifactId> 
    <version>2.2.1</version> 
</dependency> 
関連する問題