我有一个来自RESTFUL API的JSON响应,并且我已映射到我想使用ROOM持久保存的POJO。 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;
}
}
答案 0 :(得分:1)
您需要使用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