@korvin2

Как конвертировать очень большой json в Java объект?

Я получаю с бэкенда json и перевожу его в объект с помощью Gson. Вот так:

public void saveData(JsonObject data) {
    Gson gson = new GsonBuilder().registerTypeAdapter(Date.class, new DateDeserializer()).create();
    Structure structure = gson.fromJson(data.get("structure").toString(), Structure.class);
    //работаю дальше со structure 
}

Но иногда api возвращает очень большой json (около 50 МБ), что вызывает out of memory exception.
Как выглядит Structure:
@Parcel(value = Parcel.Serialization.BEAN, analyze = {Structure.class})
public class Structure extends RealmObject {

@SerializedName("id")
@PrimaryKey
@Expose
@Index
public int id;

@SerializedName("date")
@Expose
public String date;

@SerializedName("notes")
@Expose
@ParcelPropertyConverter(RealmListParcelConverter.class)
public RealmList<StructureNote> notes;

//другие поля

Основная проблема в поле "notes" - оно содержит около 80% всего файла json, который получаю из api.
Как можно преобразовать такой большой json в объект Java? Я подумывал о том, чтобы разделить notes на несколько частей, а затем по очереди просто заполнить список, но я не знаю, возможно ли это вообще и как.
  • Вопрос задан
  • 224 просмотра
Решения вопроса 1
@korvin2 Автор вопроса
Помогла эта статья https://proandroiddev.com/retrofitting-and-rxjavin...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
У Gson, как и у Jackson, есть Streaming API специально для таких случаев. Правда, придётся забыть про преобразование JSON в объект и работать с отдельными полями.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы