【问题标题】:not getting perfect value for inner arraylist内部数组列表没有得到完美的价值
【发布时间】:2017-01-26 06:59:06
【问题描述】:

courseName 名称很清楚,我不能在模型类中放置任何值。

private static List<Country> countries =  new ArrayList<>();
private ArrayList<String> courseName = new ArrayList<>();
JSONArray datalist = data.optJSONArray("data_list");
for (int i = 0; i < datalist.length(); i++) {
    JSONObject jsonObject = datalist.getJSONObject(i);
    /*strTitle.add(jsonObject.optString("cat_name_lan1"));
    courceidtitle.add(jsonObject.optString("cat_id"));
    courseName.clear();*/
    strTitle = jsonObject.optString("cat_name_lan1");

    JSONArray courseArray = jsonObject.optJSONArray("courses_array");
    if (courseArray != null && courseArray.length() > 0) {
        JSONObject courceName;
        for (int j = 0; j < courseArray.length(); j++) {
            courceName = courseArray.optJSONObject(j);
            /*courceidchild.add(courceName.optString("cat_id"));*/
            courseName.add(courceName.optString("course_name_lan1"));
        }
        countries.add(new Country(strTitle, courseName));
    } else {
        countries.add(new Country(strTitle, courseName));
    }
    courseName.clear();
}

我的 JSON,

 {
      "data": {
        "data_list": [
          {
            "cat_id": "5",
            "cat_name_lan1": "Office Productivity",
            "cat_name_lan2": "ऑफिस प्रोडक्टिविटी",
            "cat_name_lan3": "ઓફિસ પ્રોડક્ટિવિટી",
            "cat_name_lan4": null,
            "cat_name_lan5": null,
            "cat_name_lan6": null,
            "courses_array": [
              {
                "course_id": "6",
                "course_name_lan1": "Google Docs Primary Level ",
                "course_name_lan2": "गुगल डॉक्स प्राथमिक स्तर",
                "course_name_lan3": "ગુગલ ડોક્સ પ્રાથમિક સ્તર",
                "course_name_lan4": "",
                "course_name_lan5": "",
                "course_name_lan6": "",
                "course_take": 1
              },
              {
                "course_id": "61",
                "course_name_lan1": "Financial Function Excel 2016",
                "course_name_lan2": "फाइनैन्शल फंक्शन एक्सेल 2016",
                "course_name_lan3": "ફાઇનૈન્શલ ફંક્શન એક્સેલ 2016",
                "course_name_lan4": "",
                "course_name_lan5": "",
                "course_name_lan6": "",
                "course_take": 0
              }
            ]
          },
          {
            "cat_id": "4",
            "cat_name_lan1": "I.T. & Software",
            "cat_name_lan2": "आईटी & सोफ्टवेयर",
            "cat_name_lan3": "આઈટી & સોફ્ટવેર",
            "cat_name_lan4": null,
            "cat_name_lan5": null,
            "cat_name_lan6": null,
            "courses_array": [
              {
                "course_id": "18",
                "course_name_lan1": "Google Forms",
                "course_name_lan2": "गुगल फॉर्म्स ",
                "course_name_lan3": "ગુગલ ફોર્મ્સ ",
                "course_name_lan4": "",
                "course_name_lan5": "",
                "course_name_lan6": "",
                "course_take": 0
              },
              {
                "course_id": "62",
                "course_name_lan1": "Google Drive",
                "course_name_lan2": "गुगल ड्राईव",
                "course_name_lan3": "ગુગલ ડ્રાઈવ ",
                "course_name_lan4": "",
                "course_name_lan5": "",
                "course_name_lan6": "",
                "course_take": 1
              }
            ]
          }
        ],
        "status": 0,
        "message": "Category and courses tree view."
      }
    }

courseName 数组在 for 循环中被清除,因此我在模型类中得到空白值。

【问题讨论】:

  • 也请添加您的 json 样本。
  • 通过编辑问题逐步添加您真正想要得到的内容。
  • @SohailZahid 我会逐个解释

标签: java android for-loop arraylist


【解决方案1】:

将您的代码更新为

JSONArray courseArray = jsonObject.optJSONArray("courses_array");
if (courseArray != null && courseArray.length() > 0) {
    for (int j = 0; j < courseArray.length(); j++) {
        // here you should initialize your courceName
        JSONObject courceName = courseArray.optJSONObject(j);
        courseName.add(courceName.optString("course_name_lan1"));
    }
}
countries.add(new Country(strTitle, courseName));

【讨论】:

    【解决方案2】:

    试试这个代码,

    // Initialize countries list
    List<Country> countries = new ArrayList<>();
    
    JSONObject jObj = new JSONObject(json);
    JSONObject data = jObj.optJSONObject("data");
    JSONArray datalist = data.optJSONArray("data_list");
    
    // Iterate data_list JSONArray
    for (int i = 0; i < datalist.length(); i++) {
        JSONObject jsonObject = datalist.getJSONObject(i);
        String strTitle = jsonObject.optString("cat_name_lan1");
    
        // Initialize courseName here
        ArrayList<String> courseName = new ArrayList<>();
        JSONArray courseArray = jsonObject.optJSONArray("courses_array");
    
        // Iterate courses_array JSONArray
        for (int j = 0; j < courseArray.length(); j++) {
            JSONObject courceName = courseArray.optJSONObject(j);
            courseName.add(courceName.optString("course_name_lan1"));
        }
    
        // Add strTitle and courseNames to countries list
        countries.add(new Country(strTitle, courseName));
    }
    

    【讨论】:

      猜你喜欢
      • 2018-04-09
      • 1970-01-01
      • 2018-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-17
      • 2012-12-21
      相关资源
      最近更新 更多