Для того, чтобы объединить 2 JSON массива в одном я использую следующий код (входные данные areJSON массивы, wereconverted в строку)Как совместить в JSon массивы
private static String combineData(String Data, String data){
if (empty(data))
data = Data;
else { // need to append the data
try {
// first, convert the strings back to JSON objects
JSONObject jsonObj1 = new JSONObject(data); // existing data
JSONObject jsonObj2 = new JSONObject(Data); // new data
// Getting Array of Providers
String fieldName = context.getString(R.string.JSON_COMP_RECORDS);
// Second, get the array out of the JSON object
JSONArray record1 = jsonObj1.getJSONArray(fieldName);
JSONArray record2 = jsonObj2.getJSONArray(fieldName);
// Third, join them into one array
JSONArray arr = new JSONArray();
// LOOP 1 - get individual JSON objects
for (int i = 0; i < record1.length(); i++) {
JSONObject c;
try {
c = record1.getJSONObject(i);
} catch (JSONException e) {
e.printStackTrace();
return data;
}
arr.put (c);
}
// LOOP 1 - get individual JSON objects
for (int i = 0; i < record2.length(); i++) {
JSONObject c;
try {
c = record2.getJSONObject(i);
} catch (JSONException e) {
e.printStackTrace();
return data;
}
arr.put (c);
}
JSONObject json = new JSONObject();
json.put (context.getString(R.string.JSON_COMP_RECORDS), arr);
data = json.toString();
} catch (JSONException e) {
e.printStackTrace();
}
}
return data;
}
Интересно, есть ли способ сделать это более эффективно и избавиться от 2 петель?
Глядя на него более внимательно, чем мой ранее бесполезный комментарий, да - создать новую функцию. Вы должны использовать только цикл for в функции. Вам придется передать данные String, поскольку это часть catch (мне не нравится передавать переменные в функциях, но хорошо). Вы можете вернуть c, который затем помещается в массив, а не проходить вокруг массива. Я бы написал это как ответ, но моя Java ржавая, поэтому я оставлю это кому-то еще. – dgBP
@SagePawan. Спасибо, это сработало – Zvi