Проблема с преобразованием JSON в HashMap в Android

#android #json #hashmap #type-conversion

#Android #json #hashmap #тип-преобразование

Вопрос:

У меня есть 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"}]
  

Ответ №1:

Я думаю, что в вашей логике есть определенные проблемы. Для каждого объекта 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);
    ...}
  

Комментарии:

1. теперь код json в arraylist и теперь, как выполнить итерацию этого arraylist?

2. я заканчиваю это сейчас, как выполнить итерацию Arraylist? как это использовать??

3. вы можете легко найти его, просто немного поискав

Ответ №2:

Это связано с тем, что ваш код повторно инициализирует 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  ) {
....
}