【问题标题】:List of JSON items in Android StudioAndroid Studio 中的 JSON 项列表
【发布时间】:2016-05-28 20:13:36
【问题描述】:

我有这个 json:

{
"sid": "BiQo7DA4lMoRkeGN8mdfBXackyBarCSSauQtNRRKOmcfo2Ah0XCjaI1yevEoxWa09TkTOYrwGixRMvBr15h1d2",
"submissions": [{
    "submission_id": "1104764"
}, {
    "submission_id": "1104765"
}]
}

如何在 AndroidStudio 中通过 submit_id 获取项目列表?(“提交”中总是有 30 个项目)

谢谢

更新


我正在尝试使用此代码,但显示异常。

for (int i = 0; i < jObject.length(); i++) {
                        JSONObject subm = jObject.getJSONObject("submissions");
                        JSONObject jObj = subm.getJSONObject(String.valueOf(i));
                        testdata = testdata + " " + jObject.getString("submission_id");
                        //
                    }

我基本上想获取“提交”中的所有元素...

【问题讨论】:

  • 你试过什么?这是一个JSONArray,尝试一下,如果有问题可以在这里发布。
  • 提示:Android studio 与你的问题无关
  • 已编辑,添加了我的代码

标签: java android json android-studio-2.1


【解决方案1】:

路径:POJO 类 -> GSON -> 列表

您可以使用Google GSON 将 JSON 读入 Java 对象。

POJO

   public class Submission
    {
        public String submission_id;

        public Submission(String submission_id)
        {
           this.submission_id = submission_id;
        }
    }

    public class SubmissionObject
    {
        public String sid;
        public List<Submission> submissions;

        public SubmissionObject(String sid,List<Submission> submissions)
        {
           this.sid = sid;
           this.submissions = submissions;
        }
    }

POJO 已准备就绪。让我们使用 GSON 解析 JSON 响应。

     public List<Submission> submissions = new ArrayList<>();//your list holds the all submissions.

     Gson gson = new Gson();// initialize GSON parser
     SubmissionObject object = gson.fromJson(jsonResponse.toString(), SubmissionObject.class); //get the object
     submissions = object.submissions; // set list

【讨论】:

    【解决方案2】:

    试试这个:

    if (!jObject.isNull("submissions")) {
        JSONArray submissions = jObject.getJSONArray("submissions");
    
        for(int i = 0; i < submissions.length(); i++) {
            JSONObject submission = submissions.getJSONObject(i);
            String submissionId = submission.getString("submission_id");
        }
    }
    

    【讨论】:

    • 它在 JSONArray 提交中给出错误 = jObject.getJSONArray("submissions");说提交没有价值....我做了“Log.d("Test", jObject.getString("submissions"));"它给了我一个类似... [{"submission_id":"1105211"}, {....}] 我认为问题出在 "[]"
    • 能否再做一个测试:String submitsType = jObject.get("submissions").getClass().getSimpleName(); 的值是什么提交类型?
    • 当您收到异常No value for.. 时,表示jObject 没有请求的字段。当字段无法转换为 JSONArray 时,会出现不同的异常消息:值无法转换为 JSONArray。
    • 它发回“JSONArray”
    • @James - 我修改了一点我的代码,添加了对提交存在的检查。但是,如果您收到“JSONArray”,以前的版本也应该可以工作。
    猜你喜欢
    • 1970-01-01
    • 2017-07-18
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多