Android ROOM для сохранения сложных объектов - PullRequest
0 голосов
/ 08 октября 2018

У меня есть ответ JSON от RESTFUL API, и я сопоставлен с POJO, который я хочу сохранить с помощью ROOM.POJO имеет список объектов, а класс объектов, в свою очередь, содержит список бизнес-объектов наряду с другими бизнес-объектами. Может ли кто-нибудь дать мне пример того, как сопоставить эти объекты и определить DAO для их запроса.Любые ссылки, примеры или учебники будут очень полезны.POJO выглядит следующим образом

public class A{

    @PrimaryKey(autoGenerate = true)
    private long id;


    @SerializedName("list")
    @Expose
    private List<B> list = null;
}

public class B{

    @SerializedName("dt")
    @Expose
    private Integer dt;

    @SerializedName("weather")
    @Expose
    private List<C> c= null;

    public Integer getDt() {
        return dt;
    }

    public void setDt(Integer dt) {
        this.dt = dt;
    }

    public B  withDt(Integer dt) {
        this.dt = dt;
        return this;
    }

   public java.util.List<Weather> getWeather() {
        return weather;
    }

    public void setWeather(java.util.List<C> c) {
        this.c= c;
    }

    public WeatherList withWeather(java.util.List<C> c) {
        this.c= c;
        return this;
    }
}

1 Ответ

0 голосов
/ 08 октября 2018

Вам необходимо использовать TypeConverter

Создать класс, который вы хотите преобразовать

class Converters {

    @TypeConverter
    fun gsonToWeather(json: String?): Weather? {
        return Gson().fromJson(json, Weather.class);
    }

    @TypeConverter
    fun factWeatherToGson(weather: Weather): String? {
        return Gson().toJson(weather);
    }

    @TypeConverter
    fun gsonToB(json: String?): B? {
        return Gson().fromJson(json, B.class);
    }

    @TypeConverter
    fun bToGson(b: B): String? {
        return Gson().toJson(b);
    }

    @TypeConverter
    fun gsonToC(json: String?): C? {
        return Gson().fromJson(json, C.class);
    }

    @TypeConverter
    fun cToGson(c: C): String? {
        return Gson().toJson(c);
    } 
}

Затем в вашей базе данных.

@TypeConverters(Converters.class)
abstract class YourDatabase {

}

Ссылка: https://developer.android.com/training/data-storage/room/referencing-data

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...