首页 > 解决方案 > Java中json文件中的股票价格

问题描述

我需要从 Java 中的 JSON 文件中读取股票价值,这是文件

 {"name":"UCG.MI", "history":
    {"2019-05-16":{"op":"1","cl":"2","h":"2","lo":"1","vol":"10"},
     "2019-05-15":{"op":"1","cl":"2","h":"2","lo":"1","vol":"10"},
     "2019-05-14":{"op":"1","cl":"2","h":"2","lo":"1","vol":"10"},
     "2019-05-13":{"op":"1","cl":"2","h":"2","lo":"1","vol":"10"},
     "2000-01-04":{"op":"1","cl":"2","h":"2","lo":"1","vol":"10"},
     "2000-01-03":{"op":"1","cl":"2","h":"2","lo":"1","vol":"10"}
    }
}

我可以使用 org.json 获取“名称”

json = new String(Files.readAllBytes(Paths.get("UCG.json")), "UTF-8");

 JSONObject obj = new JSONObject(json);

 String pageName = obj.getString("name");

 System.out.println(pageName);

有人可以帮我阅读文件的其余部分吗?

我试试

JSONArray arr = obj.getJSONArray("history");

for (int i = 0; i < arr.length(); i++) {

    String post_id = arr.getJSONObject(i).getString("op");

}

但我得到错误

org.json.JSONException: JSONObject["history"] 不是 JSONArray。

提前致谢

标签: javajson

解决方案


您收到错误是因为historyJSON 中的属性不是数组而是对象。尝试以下部分而不是您已有的部分

JSONObject history = obj.getJSONObject("history");
for (String date: history.keySet()) {
  JSONObject post = history.getJSONObject(date);
  String postId = post.getString("op");
  // ...
}

推荐阅读