Привет всем. Нужно распарсить немалый по размерам
JSON.
Почитал
вот это и реализовал в AsyncTask (пока что) следующее:
private class JSONLoader extends AsyncTask<String, Void, ArrayList<Artist>> {
ArrayList<Artist> artistsCollection = new ArrayList<>();
@Override
protected ArrayList<Artist> doInBackground(String... params) {
try{
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url(params[0]).build();
Response response = client.newCall(request).execute();
if(response.isSuccessful()){
InputStream in = response.body().byteStream();
JsonReader reader = new JsonReader(new InputStreamReader(in, "UTF-8"));
reader.beginArray();
while (reader.hasNext()){
Artist artist = new Gson().fromJson(reader, Artist.class);
artistsCollection.add(artist);
}
reader.endArray();
reader.close();
}else {
throw new IOException("Unexpected code" + response);
}
return artistsCollection;
}catch (IOException e){
e.printStackTrace();
return null;
}
}
@Override
protected void onPostExecute(ArrayList<Artist> artists) {
setArtists(artists);
}
}
}
В любом случае, приложение "вылетает", т.к. требуется очень-очень-очень много памяти. Пожалуйста, подскажите как с этим совладать.
PS: Могу предположить, что многие будут советовать Jackson. Вот тут, пожалуйста, если не трудно, пришлите побольше примеров кода. Я посмотрел несколько туториалов, и, честно говоря, в этой мешанине со вкусом карри не нашёл толковых руководств по перемещению данных в POJOбъекты.