使用循环Android获取JSON值



嗨,我想帮助在JSON数据中获得value OBJ

[
 { 
 "type": "visitors",
 "dates": [
     {
      "date": "2015-05-01",
      "items": [
           {
            "value": "100"
           }
        ]
      }
  ]
},
{
  "type": "actions",
  "dates": [
        {
         "date": "2015-05-01",
         "items": [
              {
               "value": "230"
              }
          ]
    }
  ]
},
{
  "type": "actions-average",
  "dates": [
       {
        "date": "2015-05-01",
        "items": [
             {
              "value": "2.3"
             }
          ]
        }
       ]
    }
 ]

im使用此代码获取value,但我希望将不同的value分配给其他变量

 for (int i = 0; i < jsonArray.length(); i++) {
        JSONObject jsonObject = jsonArray.getJSONObject(i);
        String value = null;
        JSONArray datesArray = jsonObject.getJSONArray("dates");
        for (int j = 0; j < datesArray.length(); j++) {
            JSONObject dates = datesArray.getJSONObject(j);
            JSONArray itemsArray = dates.getJSONArray("items");
            for (int k = 0; k < itemsArray.length(); k++) {
                JSONObject vvObj = itemsArray.getJSONObject(k);
                value = vvObj.getString("value");
                //Log.v(TAG, "Edited JSONData: " + k + value);
            }
        }
        values[i] = value;
        //Log.v(TAG, "loop JSONData: " + Arrays.toString(values));
    }

最终结果看起来像

var1 = value // form the first loop

var2 = value // form the 2nd loop

var3 = value // form the 3rd loop

尝试一下。您将'value [i] = value'放在错误的地方。它将从所有数组中获取所有值。如果您需要其他Justa SK,我将修改它。

ArrayList<String> values = new ArrayList<String>();
for (int i = 0; i < jsonArray.length(); i++) 
{
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            String value = null;
            JSONArray datesArray = jsonObject.getJSONArray("dates");
            for (int j = 0; j < datesArray.length(); j++) 
             {
                JSONObject dates = datesArray.getJSONObject(j);
                JSONArray itemsArray = dates.getJSONArray("items");
                 for (int k = 0; k < itemsArray.length(); k++) 
                    {
                      JSONObject vvObj = itemsArray.getJSONObject(k);
                      values.add( vvObj.getString("value") );
                    }

             }
}
//check this part how to get back your data          
String output ;
for (int i = 0; i < values.size(); i++) 
{
    output = values.get(i) ;
    //do something with value from possition i , is stored in output
    Log.v(TAG, "loop JSONData: " + output );
}

也许这会有所帮助

String[] values=new String[jsonArray.length()];
//create string array of size == jsonArray.length() outside of forloop
for (int i = 0; i < jsonArray.length(); i++) {
    JSONObject jsonObject = jsonArray.getJSONObject(i);
    //String value = null;//comment this line
    JSONArray datesArray = jsonObject.getJSONArray("dates");
    for (int j = 0; j < datesArray.length(); j++) {
        JSONObject dates = datesArray.getJSONObject(j);
        JSONArray itemsArray = dates.getJSONArray("items");
        for (int k = 0; k < itemsArray.length(); k++) {
            JSONObject vvObj = itemsArray.getJSONObject(k);
            value = vvObj.getString("value");
            //Log.v(TAG, "Edited JSONData: " + k + value);
        }
    }
    values[i] = value;
    //Log.v(TAG, "loop JSONData: " + Arrays.toString(values));
}

最新更新