преобразовать ArrayList в JSONArray
-
27-10-2019 - |
Вопрос
У меня есть список ArrayList, который я использую в ArrayAdapter для ListView.Мне нужно взять элементы в списке и преобразовать их в JSONArray для отправки в API.Я искал, но не нашел ничего, что объясняло бы, как это может работать, любая помощь будет оценена.
ОБНОВЛЕНИЕ - РЕШЕНИЕ
Вот что я в итоге сделал для решения проблемы.
Объект в ArrayList:
родовое словоВот как я его преобразовал:
родовое словоИ вывод:
родовое словоНадеюсь, когда-нибудь это кому-нибудь поможет!
Решение
Если я правильно прочитал конструкторы JSONArray, вы можете построить их из любой коллекции (arrayList является подклассом Collection) следующим образом:
родовое словоСсылки:
Другие советы
Используйте библиотеку Gson для преобразования ArrayList в JsonArray.
родовое слово Когда кто-то выясняет, что OP хочет преобразовать настраиваемый список в org.json.JSONArray
, а не в com.google.gson.JsonArray
, ответ ПРАВИЛЬНО должен быть таким:
public void itemListToJsonConvert(ArrayList<HashMap<String, String>> list) {
JSONObject jResult = new JSONObject();// main object
JSONArray jArray = new JSONArray();// /ItemDetail jsonArray
for (int i = 0; i < list.size(); i++) {
JSONObject jGroup = new JSONObject();// /sub Object
try {
jGroup.put("ItemMasterID", list.get(i).get("ItemMasterID"));
jGroup.put("ID", list.get(i).get("id"));
jGroup.put("Name", list.get(i).get("name"));
jGroup.put("Category", list.get(i).get("category"));
jArray.put(jGroup);
// /itemDetail Name is JsonArray Name
jResult.put("itemDetail", jArray);
return jResult;
} catch (JSONException e) {
e.printStackTrace();
}
}
}
I know its already answered, but theres a better solution here use this code :
for ( Field f : context.getFields() ) {
if ( f.getType() == String.class ) || ( f.getType() == String.class ) ) {
//DO String To JSON
}
/// And so on...
}
This way you can access variables from class without manually typing them..
Faster and better .. Hope this helps.
Cheers. :D
Add to your gradle:
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
Convert ArrayList
to JsonArray
JsonArray jsonElements = (JsonArray) new Gson().toJsonTree(itemsArrayList);