android json对象循环并使用此json对象创建一个单独的列表

时间:2018-04-13 06:33:48

标签: java android json

{
    "My Income": {
        "catResponse": null,
        "sum": [
            {
                "name": "Salary",
                "budgetvalue": 0,
                "actualvalue": 6000,
                "catID": 1,
                "iconname": null,
                "iconcolor": null,
                "budgetHeadId": 0
            }
        ],
        "spendAmount": 0,
        "incomeAmount": null
    },
    "My Growth": {
        "catResponse": null,
        "sum": [
            {
                "name": "IRA",
                "budgetvalue": 0,
                "actualvalue": 300,
                "catID": 23,
                "iconname": null,
                "iconcolor": null,
                "budgetHeadId": 0
            },
            {
                "name": "Mutual Funds",
                "budgetvalue": 0,
                "actualvalue": 500,
                "catID": 26,
                "iconname": null,
                "iconcolor": null,
                "budgetHeadId": 0
            },
            {
                "name": "My Goals",
                "budgetvalue": 0,
                "actualvalue": 150,
                "catID": 28,
                "iconname": null,
                "iconcolor": null,
                "budgetHeadId": 0
            }
        ],
        "spendAmount": 950,
        "incomeAmount": null
    },
    "My Protection": {
        "catResponse": null,
        "sum": [],
        "spendAmount": 0,
        "incomeAmount": null
    },
    "My Spend": {
        "catResponse": null,
        "sum": [
            {
                "name": "Rent & Utilities",
                "budgetvalue": 0,
                "actualvalue": 855,
                "catID": 5,
                "iconname": null,
                "iconcolor": null,
                "budgetHeadId": 0
            }
        ],
        "spendAmount": 855,
        "incomeAmount": null
    },
    "My Borrowings": {
        "catResponse": null,
        "sum": [
            {
                "name": "Education Loan",
                "budgetvalue": 0,
                "actualvalue": 1200,
                "catID": 18,
                "iconname": null,
                "iconcolor": null,
                "budgetHeadId": 0
            },
            {
                "name": "Credit Card Payment",
                "budgetvalue": 0,
                "actualvalue": -1790,
                "catID": 20,
                "iconname": null,
                "iconcolor": null,
                "budgetHeadId": 0
            },
            {
                "name": "Auto Loan",
                "budgetvalue": 0,
                "actualvalue": 600,
                "catID": 13,
                "iconname": null,
                "iconcolor": null,
                "budgetHeadId": 0
            }
        ],
        "spendAmount": 3590,
        "incomeAmount": null
    }
}

我的代码是这样的 JSONObject jObject = new JSONObject(String.valueOf(response))。getJSONObject(" My Income");

  Iterator<String> keys = jObject.keys();
  Log.i("ky1",keys.toString());
  String keyname = null;
  String keyValue = null;
  while( keys.hasNext() )
  {
    if(jObject.isNull("catResponse") || response.isNull("incomeAmount")||response.isNull("iconname" )||response.isNull("iconcolor")) {
      try {
        jObject.put("catResponse", "0");
        jObject.put("incomeAmount","0");
        jObject.put("iconname", "0");
        jObject.put("iconcolor", "0");
        String  res  = jObject.toString();
        Log.i("newrespone1", res);
      } catch (JSONException e) {
        e.printStackTrace();
      }

    }
    Log.i("kyname", String.valueOf(keys));
     keyname = keys.next();
     keyValue = jObject.getString(keyname);
    Log.v("keyValue", keyValue);
    Log.v("category key", keyname);
    JSONObject innerJObject = jObject.getJSONObject(keyname);
    JSONObject jo = jObject.getJSONObject(keyname);
    Iterator<String> innerKeys = jo.keys();
    while( innerKeys.hasNext() )
    {
      String innerKkey = innerKeys.next();
      String value = jo.getString(innerKkey);
      Log.v("key = "+keyname, "value = "+value);
      JSONObject totalObj = new JSONObject(value);
      if(totalObj != null){
        ModelHeader modelHeader = new ModelHeader();
        modelHeader.setIncomeAmount(innerJObject.getString("My Income"));
        modelHeader.setCatResponse(totalObj.getString("catResponse"));
        modelHeader.setSum(totalObj.getString("sum"));
        modelHeader.setSpendAmount(totalObj.getString("spendAmount"));
        modelHeader.setIncomeAmount(totalObj.getString("incomeAmount"));
        modelHeader.setMyGrowth(innerJObject.getString("My Growth"));
        modelHeader.setMyProt(innerJObject.getString("My Protection"));
        modelHeader.setMyBorrow(innerJObject.getString("My Borrowings"));
        modelHeader.setMySpend(innerJObject.getString("My Spend"));
        modelHeaderslist.add(modelHeader);
        JSONArray list = totalObj.getJSONArray("sum");
        if(list != null){
          for(int i = 0; i < list.length();i++){
            JSONObject elem = list.getJSONObject(i);
            if(elem != null){
              ModelBudget modelBudget = new ModelBudget();
              modelBudget.setName(elem.getString("name"));
              modelBudget.setBudgetHeadId(elem.getString("budgetHeadId"));
              modelBudget.setActualvalue(elem.getString("actualvalue"));
              modelBudget.setCatID(elem.getString("catID"));
              modelBudget.setIconname(elem.getString("iconname"));
              modelBudget.setIconcolor(elem.getString("iconcolor"));
              modelBudget.setBudgetvalue(elem.getString("budgetvalue"));

              budgetList = new ArrayList<>();
              budgetList.add(modelBudget);

这里null点异常即将到来,所以我将json对象的每个null替换为零,请帮我如何处理这个json对象.. 如何在iterration处理零点异常?

0 个答案:

没有答案