在Java中,我如何仅为以下JSON输出中的“data”部分提取数据?
{ “getuserhashrate”:{ “数据”:1425, “运行时间”:8.2659721374512, “版本”: “1.0.0”}}
json.get(“data”)不起作用并给出以下错误:
线程“main”中的异常org.json.JSONException:找不到JSONObject [“data”]。 at org.json.JSONObject.get(JSONObject.java:454) 在so4308554.JsonReader.main(JsonReader.java:40)
答案 0 :(得分: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");
现在您可以访问该对象的字段。
答案 1 :(得分:0)
JsonPath是一个从JSON中提取信息的好工具
{ “getuserhashrate”:{ “数据”:1425, “运行时间”:8.2659721374512, “版本”: “1.0.0”}}
String json = yourStringjson;
String data = JsonPath.read(json, "$.getuserhashrate.data");
数据将为1425
只需添加libs,如果您不想创建bean以获得完整的marshall,它将是一个有用的工具