2013-08-30 56 views
3

我目前正在使用Java,從web服務讀取JSON響應。 到目前爲止,我一直在解析JSON以提前知道路徑。所以我可以根據情況製作對象和數組。在Java中解析JSON

String jsonText = readAll(br); 
JSONObject json = new JSONObject(jsonText); 
JSONObject resp = json.getJSONObject("Response"); 

但現在我有一個問題。我必須要求用戶爲我提供一個路徑,並且我必須在JSON響應中獲取該路徑的值。路徑可能不正確 - 在這種情況下返回錯誤。

有點像XML中的XPath。我們在JSON中有類似的東西嗎?

路徑例如可以是這樣的: /響應/ VehicleSearch /交通工具/ [2] /功能/特性[7]/ID

請原諒我,如果它是一個愚蠢的問題。任何幫助表示讚賞。 在此先感謝。

+0

嘗試使用GSON,一個谷歌圖書館與JSON – Satya

+1

處理對於GSON的解決方案,在這裏看到:http://stackoverflow.com/questions/15658124/finding-deeply-nested-key-value-in -json –

+0

您已將JSON分解爲樹結構。您可以像訪問XML那樣使用「路徑」來訪問它,儘管您可能必須親自步入分支,而使用路徑符號。 –

回答

6

JSON相當於XPATH for XML可以使用JsonPath

按照文檔:

JsonPathJSON什麼XPATHXML,一個簡單的方法來提取 部分給定的文件。 JsonPath可用於許多編程 語言,如JavascriptPythonPHP現在還在Java!

+1

不錯。我不知道這個,但它在很多場合都非常方便。 – Ridcully

+0

感謝Anubhava指向jsonpath。 我目前正在嘗試使用jsonpath,但有一些問題:http://stackoverflow.com/questions/18539862/parse-json-using-jsonpath-in-java。 –

+0

對不起剛回來,意識到你已經解決了其他線程上的問題。 – anubhava