2017-02-25 52 views
0

我做了一些尋找,但沒有聽明白我應該如何從這個字符串的JSON的拉動特定值:http://pastebin.com/mvMrcii5解析JSON在Java中使用org.json大型JSON文件/沃特森個性

我產生它使用沃森個性見解API,並從我的理解,我應該只可以使用org.json用於檢索的JSON配置文件對象轉換成實際JSONObject,到目前爲止,我已經能夠鍵入

JSONObject objectArray = new JSONObject(profile); 

和它沒有拋出任何錯誤。我只是不知道如何從JSON中獲得具體的trait_id及其相關的百分位數,並且具有數百個相同引用的不同實例。理想情況下,他們將被放置在不同的變量中,以便分別打印它們。如果在JSON中選擇特定對象太麻煩,我也可以將它解析爲CSV。

我會非常感謝任何幫助,把我的頭撞在牆上。

+1

歡迎來到Stack Overflow!請查看我們的[SO問題清單](http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist)來幫助你提出一個好問題,從而得到一個很好的答案。 –

+0

你的問題太含糊。我們可以回答的是,JSONObject的API文檔中描述了從JSONObject中提取信息的方式。你讀過了嗎?你有嘗試過什麼嗎? –

+0

我試着用org.json和gson做任何事情,但它太混亂了,最終太複雜了。我在下面發佈了我的工作代碼,並最終使用jsonpath作爲我的選擇庫! – Jako81624

回答

0

最後我想出瞭如何去做。對於使用沃森SDK的Java任何人想要一個解決方案,這裏是我的:

Profile profile = service.getProfile(secondArray).execute(); 
    String textProfile = profile.toString();   
    Object document = Configuration.defaultConfiguration().jsonProvider().parse(textProfile); 
    String nameWatson = JsonPath.read(document, "$.personality[0].name"); 
    Double percentWatson = JsonPath.read(document, "$.personality[0].percentile"); 

這是通過使用JayWay JSONPath庫,添加到Maven有:

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

的Java的第一行執行沃森查詢並以默認JSON格式將其存儲在配置文件對象中作爲配置文件。接下來將其轉換爲字符串並將其存儲爲textProfile。下一行使用jsonpath庫將現在轉換的配置文件存儲爲jsonpath庫可通過textProfile變量讀取的內容。倒數第二行,然後遍歷Watson JSON佈局的層次結構,將名稱的第一個實例作爲nameWatson存儲在個性部分下,同樣的想法應用於下一行。如果您遇到問題,請打印配置文件變量進行屏幕顯示,並將其保存到文本文件中以便稍後參考,並在將代碼實施到代碼之前使用this進行測試。請注意,使用任何修飾符(如「..」)將拋出一個錯誤,除非放入列表中,所以請確保使用明確的引用(請參閱jsonpath github上的更多內容)