我试图从AsyncTask获取json数据的值.我只得到最后一个值,我不明白为什么......
我试着为每个人解析,但我做错了什么:
这是我的代码:
private class DecodeData extends AsyncTask{ protected ArrayList > decodedArray; protected HashMap decodedMap; protected Iterator it; protected JSONArray m_Array; protected JSONObject object; protected String response; protected String keys; protected String value; @SuppressWarnings("unchecked") @Override protected String doInBackground(String... params) { response = params[0]; keys = ""; value = ""; object = null; decodedArray = new ArrayList >(); try { JSONArray arrayResp = new JSONArray(response); for (int i = 0; i < arrayResp.length(); i++) { decodedMap = new HashMap (); it = arrayResp.getJSONObject(i).keys(); while (it.hasNext()) { keys = (String)it.next(); value = Base64.DecodeStrToStr((String)arrayResp.getJSONObject(i).get(keys)); decodedMap.put("\""+keys+"\"", "\""+value+"\""); object = new JSONObject(decodedMap.toString()); Log.i("DECODED MAP : ", object.toString()); m_Array = new JSONArray(); m_Array.put(object); Log.i("M_ARRAY", ""+m_Array); } // decodedArray.add(decodedMap); } } catch (JSONException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } // array = new JSONArray(decodedArray); return m_Array.toString(); }
我正在使用Volley来获得回应.之后,我使用此响应创建一个JSONArray,并从中获取所有键/值.我将所有这些都放在我的Hashmap中.但是当我在这里放置键/值:m_Array.put(object)时,它只放入我的json数据的最后一个值.有人知道我做错了什么吗?