使用Retrofit适当定义API接口

问题描述 投票:-1回答:2

我在这个链接https://d17h27t6h515a5.cloudfront.net/topher/2017/May/59121517_baking/baking.json中有一个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+"]";
}
}

Step类:

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+"]";
}
}
android retrofit2
2个回答
0
投票

Retrofit将您的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的每个Call都可以向远程Web服务器发出同步或异步HTTP请求。

Call<List<Repo>> repos = service.listRepos("octocat");

来源:https://square.github.io/retrofit/


0
投票

我找到了一个适用的答案。我的接口类更正为:

public interface getList {  
@GET("baking.json")
Call<ArrayList<MyPojo>> parseJsonToObject(
);
}

在MyPojo类中:我更改了以下内容;

private List<Ingredients> ingredients = null;
private List<Steps> steps = null;

这是工作。感谢大家。

© www.soinside.com 2019 - 2024. All rights reserved.