2014-02-17 47 views
0

在Java中,我將如何爲以下JSON輸出中的「數據」部分提取數據?如何從JSON輸出字符串中提取單個數據片段?

{"getuserhashrate":{"data":1425,"runtime":8.2659721374512,"version":"1.0.0"}}

json.get( 「數據」)不工作,並提供了以下錯誤:

Exception in thread "main" org.json.JSONException: JSONObject["data"] not found. at org.json.JSONObject.get(JSONObject.java:454) at so4308554.JsonReader.main(JsonReader.java:40)

+1

我強烈建議快速閱讀[json.org](http://json.org)以熟悉JSON。 SO上也有很多關於這個話題的帖子。 –

+0

您會注意到該輸出在另一個JSON對象內有一個JSON對象。因此,您應該先訪問getuserhasrate並從那裏繼續訪問這些值。同樣,就像@Brian Roach所說的,查看json.org – Eenvincible

+0

上的文檔,我會推薦使用JSON解析器。 –

回答

0

JsonPath是一個很好的工具,從JSON中提取信息

{ 「getuserhashrate」: { 「數據」:1425, 「運行時間」:8.2659721374512, 「版本」: 「1.0.0」}}

String json = yourStringjson; 
String data = JsonPath.read(json, "$.getuserhashrate.data"); 

數據將b Ë1425

只需添加庫,如果你不想創建豆有一個完整的馬歇爾

https://code.google.com/p/json-path/

+0

嘗試了這一點,並得到了很多時髦的錯誤。不太清楚如何解決這些問題,因爲我對圖書館不熟悉。 – SirFerret

1

你有一個JSON對象,這將是一個非常有用的工具。它包含一個現場:getuserhashrate

{"getuserhashrate": ... } 

該字段包含有其自身的領域(「數據」,「運行」等),另一個JSON對象。

{"data":1425,"runtime":8.2659721374512, .. } 

從看你的堆棧跟蹤,您使用的基本json.org library(或Android SDK)。

你會解析JSON,並通過取回頂層對象:

JSONObject root = new JSONObject(myJsonString); 

然後你會得到包含在getuserhashrate領域對象:

JSONObject data = root.getJSONObject("getuserhashrate"); 

現在你能夠訪問該對象的字段。