Извините, если сомнение слишком концептуально, я немного неопытен...
Я получаю данные JSON из URL-адреса с модификацией, и я также хочу сохранить эти данные в своей базе данных SQLite. Для создания этой базы данных я буду использовать новое сопоставление Room ORM.
Я извлекаю сетевые классы POJO с помощью плагина Android Studio GsonFormat, и он генерирует классы Recipes, Ingredients и Steps ниже. И сгенерируйте несколько классов Room Entity (подробнее ниже)
Как видите, оба набора классов практически идентичны, что приводит к большому количеству повторяющегося кода. Но я также не считаю правильным смешивать использование этих двух наборов классов. И Room запрещает объектным объектам ссылаться друг на друга, поэтому, если я захочу использовать первый набор классов, это будет сложнее...
Я сомневаюсь, как эти случаи обрабатываются в целом?
--- Пожо - Гсону понятно:
public class Recipes {
private int id;
private String name;
private int servings;
private String image;
private List<Ingredients> ingredients;
private List<Steps> steps;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getServings() {
return servings;
}
public void setServings(int servings) {
this.servings = servings;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public List<Ingredients> getIngredients() {
return ingredients;
}
public void setIngredients(List<Ingredients> ingredients) {
this.ingredients = ingredients;
}
public List<Steps> getSteps() {
return steps;
}
public void setSteps(List<Steps> steps) {
this.steps = steps;
}
@Override
public String toString() {
return "Recipes{" +
"id=" + id +
", name='" + name + '\'' +
", servings=" + servings +
", image='" + image + '\'' +
", ingredients=" + ingredients +
", steps=" + steps +
'}';
}
}
class Ingredients {
private double quantity;
private String measure;
private String ingredient;
public double getQuantity() {
return quantity;
}
public void setQuantity(double quantity) {
this.quantity = quantity;
}
public String getMeasure() {
return measure;
}
public void setMeasure(String measure) {
this.measure = measure;
}
public String getIngredient() {
return ingredient;
}
public void setIngredient(String ingredient) {
this.ingredient = ingredient;
}
@Override
public String toString() {
return "Ingredients{" +
"quantity=" + quantity +
", measure='" + measure + '\'' +
", ingredient='" + ingredient + '\'' +
'}';
}
}
class Steps {
private int id;
private String shortDescription;
private String description;
private String videoURL;
private String thumbnailURL;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getShortDescription() {
return shortDescription;
}
public void setShortDescription(String shortDescription) {
this.shortDescription = shortDescription;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getVideoURL() {
return videoURL;
}
public void setVideoURL(String videoURL) {
this.videoURL = videoURL;
}
public String getThumbnailURL() {
return thumbnailURL;
}
public void setThumbnailURL(String thumbnailURL) {
this.thumbnailURL = thumbnailURL;
}
@Override
public String toString() {
return "Steps{" +
"id=" + id +
", shortDescription='" + shortDescription + '\'' +
", description='" + description + '\'' +
", videoURL='" + videoURL + '\'' +
", thumbnailURL='" + thumbnailURL + '\'' +
'}';
}
}
--- классы сущностей комнаты
@Entity
public class Recipe {
@PrimaryKey
private int id;
private String name;
private int servings;
private String image;
}
@Entity(foreignKeys = @ForeignKey(entity = Recipe.class,
parentColumns = "id",
childColumns = "recipeId"))
public class Ingredient {
@PrimaryKey
private int id;
private double quantity;
private String measure;
private String ingredient;
private int recipeId;
}