Соответствующее определение интерфейса API с использованием Retrofit
У меня есть JSON по этой ссылке https://d17h27t6h515a5.cloudfront.net/topher/2017/May/59121517_baking/baking.json. Я хочу сгенерировать список класса MyPojo; этот класс содержит массив ингредиентов, массив шагов, строки, такие как Id, имена, обслуживание и другие, использующие Retrofit 2. Пожалуйста, помогите определить интерфейс API для использования в Retrofit 2. Ниже определен класс POJO, который я определил. Класс POJO выглядит следующим образом:
public class MyPojo{
private Ingredients[] ingredients;
private String id;
private String servings;
private String name;
private String image;
private Steps[] steps;
public Ingredients[] getIngredients ()
{
return ingredients;
}
public void setIngredients (Ingredients[] ingredients)
{
this.ingredients = ingredients;
}
public String getId ()
{
return id;
}
public void setId (String id)
{
this.id = id;
}
public String getServings ()
{
return servings;
}
public void setServings (String servings)
{
this.servings = servings;
}
public String getName ()
{
return name;
}
public void setName (String name)
{
this.name = name;
}
public String getImage ()
{
return image;
}
public void setImage (String image)
{
this.image = image;
}
public Steps[] getSteps ()
{
return steps;
}
public void setSteps (Steps[] steps)
{
this.steps = steps;
}
У меня сейчас проблема в том, как получить список класса POJO, я определяю его как:
public interface getList {
@GET("baking.json")
Call<List<MyPojo>> parseJsonToObject(
);
}
Это не дает мне объект, который я хочу, я думаю, что я неправильно понимаю, где я положил Call<List<MyPojo>> parseJsonToObject()
в интерфейсе. Любезно помочь.
Ниже мой класс Ингредиенты:
public class Ingredients{
private String measure;
private String ingredient;
private String 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;
}
public String getQuantity ()
{
return quantity;
}
public void setQuantity (String quantity)
{
this.quantity = quantity;
}
@Override
public String toString()
{
return "ClassPojo [measure = "+measure+", ingredient = "+ingredient+", quantity = "+quantity+"]";
}
}
Степ класс:
public class Steps{
private String id;
private String shortDescription;
private String description;
private String videoURL;
private String thumbnailURL;
public String getId ()
{
return id;
}
public void setId (String 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 "ClassPojo [id = "+id+", shortDescription = "+shortDescription+", description = "+description+", videoURL = "+videoURL+", thumbnailURL = "+thumbnailURL+"]";
}
}
2 ответа
Я нашел ответ, который работает для. Мой класс интерфейса исправлен как:
public interface getList {
@GET("baking.json")
Call<ArrayList<MyPojo>> parseJsonToObject(
);
}
И в классе MyPojo: я изменил следующее;
private List<Ingredients> ingredients = null;
private List<Steps> steps = null;
Это работает. Спасибо всем.
Модернизация превращает ваш HTTP API в интерфейс Java.
public interface GitHubService {
@GET("users/{user}/repos")
Call<List<Repo>> listRepos(@Path("user") String user);
}
Класс Retrofit генерирует реализацию интерфейса GitHubService.
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com/")
.build();
GitHubService service = retrofit.create(GitHubService.class);
Каждый вызов из созданного GitHubService может сделать синхронный или асинхронный HTTP-запрос к удаленному веб-серверу.
Call<List<Repo>> repos = service.listRepos("octocat");
источник: https://square.github.io/retrofit/