#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 ) {
....
}