gpt4 book ai didi

java - 无法使用 JSON 解析子项

转载 作者:行者123 更新时间:2023-12-01 12:09:08 25 4
gpt4 key购买 nike

我在正确解析 json 格式时遇到了一些麻烦,我想知道是否有人可以展示如何在这种情况下正确解析数据:

来源:

  try {
HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
InputStream is = conn.getInputStream();
BufferedReader r = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
for(String line = r.readLine(); line != null; line = r.readLine()){
sb.append(line);
}
JSONArray jsonArray = new JSONArray(sb.toString());
for(int i = 0; i < jsonArray.length(); i++){
JSONObject obj = jsonArray.getJSONObject(i);
String sha = obj.getString("sha");
String name = obj.getString("name");
String message = obj.getString("message");
Log.d("sha", sha);
Log.d("name", name);
Log.d("message", message);

}
}

错误:

“名称没有值(value)”

JSON 数据:

http://pastebin.com/0FJUGm3L

最佳答案

如果您将 JSON 加载到此 JSON Viewer工具,您将发现您具有以下 JSON 结构:

enter image description here

现在,由于您想要获取sha、提交消息和提交者名称,因此您需要深入了解 json 的对象结构。

  1. 首先,您需要循环整个 json 数组:

    for(int i = 0; i < jsonArray.length(); i++){
    JSONObject currentObj = jsonArray.getJSONObject(i);
  2. 在循环内部,您需要找到“sha”所在的位置。再次查看该结构,您会发现它位于对象的正下方。所以你只需要使用 getString() :

    String sha = currentObj.getString("sha");
  3. 要获取提交消息,由于它位于commit对象下,因此您需要先读取该对象,然后再读取消息 >:

    JSONObject objCommit = currentObj.getJSONObject("commit");
    String commitMessage = objCommit.getString("message");
  4. 最后一步是获取作者的姓名。再次注意,name 存储在 author 对象下。因此,您需要先阅读该内容。并且由于 author 对象存储在 commit 对象下,因此您可以通过 objCommit 读取提交对象来获取作者:

    JSONObject objAuthor = objCommit.getJSONObject("author");
    String authorName = objAuthor.getString("name");
  5. 剩下的就看你了:)

无私插件:此外,如果您在阅读或遍历 JSON 时遇到困难,那么 SO 问题可以派上用场:JSON Parsing Error

关于java - 无法使用 JSON 解析子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27372674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com