2017-05-05 38 views
3

我想從使用JsonPath的JSON對象獲取值。請任何人都請建議我適當的罐子,我將需要,因爲根據我的知識,我得到這個例外,我用jsonpath的罐子。如何在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

難道你檢查了你的路?這可以使用許多在線工具中的一種來完成,例如[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>