Соответствующее определение интерфейса 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/

Другие вопросы по тегам