Проблема преобразования JSON в HashMap в Android - PullRequest
1 голос
/ 29 сентября 2011

У меня есть JSONArray, и когда я декодирую JSON в HashMap в то время, HashMap принимает последнее значение JSONArray.

вот мой код:

QjArray = new JSONArray(Questionresult);
JSONObject json_data  = new JSONObject();
for (int i = 0; i<QjArray.length(); i++) {
    objJMap = new HashMap<String, String>(); 
    json_data = QjArray.getJSONObject(i);

    jQuestionName =json_data.getString("QuestionName");
    objJMap.put("QuestionName",jQuestionName);

    jQuestiontypeid = json_data.getInt("Questiontypeid");
    String Qid = jQuestiontypeid.toString();
    objJMap.put("Questiontypeid", Qid);

    jAnswertypeid = json_data.getInt("Answertypeid");
    String Aid = jAnswertypeid.toString();
    objJMap.put("Answertypeid", Aid);
}

Мой JSONArray:

This is question list[{"QuestionID":"1","QuestionName":"when you come","Questiontypeid":"1","Answertypeid":"1"},{"QuestionID":"2","QuestionName":"about your words","Questiontypeid":"1","Answertypeid":"2"},{"QuestionID":"3","QuestionName":"you want extra service?","Questiontypeid":"1","Answertypeid":"3"},{"QuestionID":"4","QuestionName":"performance of quality ?","Questiontypeid":"1","Answertypeid":"4"},{"QuestionID":"5","QuestionName":"performance of staff?","Questiontypeid":"1","Answertypeid":"5"},{"QuestionID":"6","QuestionName":"when you left room ?","Questiontypeid":"2","Answertypeid":"1"},{"QuestionID":"7","QuestionName":"your words about roomservice ?","Questiontypeid":"2","Answertypeid":"2"},{"QuestionID":"8","QuestionName":"you like roomservice ?","Questiontypeid":"2","Answertypeid":"3"},{"QuestionID":"9","QuestionName":"performance room service ?","Questiontypeid":"2","Answertypeid":"4"},{"QuestionID":"10","QuestionName":"performance room service staff?","Questiontypeid":"2","Answertypeid":"5"}]

Ответы [ 2 ]

2 голосов
/ 29 сентября 2011

Я думаю, что в вашей логике есть определенные проблемы.Для каждого объекта JSON вы создаете новый объект HashMap внутри цикла for, поэтому вы потеряете все предыдущие данные.Также HashMap переопределит новые данные, поэтому у вас будут только окончательные данные.Что вы можете сделать, это создать arrayList Hashmap ....

     ArrayList<HashMap<String, String>> data = new ArrayList<HashMap<STring, String>>();
    for (int i = 0; i<QjArray.length(); i++) {

           objJMap = new HashMap<String, String>(); 
........
           data.add(objJMap);
    ...}
2 голосов
/ 29 сентября 2011

Это потому, что ваш код повторно инициализирует HashMap после каждого цикла.

for (int i = 0; i<QjArray.length(); i++) {
             objJMap = new HashMap<String, String>(); 
....
}

Поместите HashMap вне цикла, и он будет работать нормально.

objJMap = new HashMap<String, String>(); 
for (int i = 0; i<QjArray.length(); i++) {
....
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...