2014-02-17 27 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"); 

现在你能够访问该对象的字段。