【发布时间】:2017-10-05 09:04:15
【问题描述】:
我发现的所有帖子都没有帮助我理解我应该做什么。坚持了很长一段时间,所以在这里问。我想要 IN 和 OUT 名称列表,因为“in”和“out”是 json 数组。该错误在响应的 OnFailure 中显示为异常。 getUsers() 处于主要活动中。
private void getUsers() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
APIInterface api = retrofit.create(APIInterface.class);
Call<List<In>> call1 = api.getInUsers();
call1.enqueue(new Callback<List<In>>() {
@Override
public void onResponse(Call<List<In>> call1, Response<List<In>> response) {
List<In> inUsers = response.body();
Log.v("InUsers",String.valueOf(inUsers));
data.add(new Vote(Vote.HEADER_TYPE,"IN"));
mAdapter.notifyDataSetChanged();
for(In vote : inUsers) {
data.add(new Vote(Vote.ITEM_TYPE,String.valueOf(vote)));
}
}
@Override
public void onFailure(Call<List<In>> call1, Throwable t) {
Toast.makeText(getActivity().getApplicationContext(), t.getMessage() + "IN LIST", Toast.LENGTH_LONG).show();
}
});
}
json 是:
{
"message": "Hello World.",
"planData": {
"planId":"44444410",
"votesData": {
"votes": {
"in":[
{
"firstName" : "Raj",
"lastName" : "Taj"
},
{
"firstName" : "Badger",
"lastName" : "Tagger"
},
{
"firstName" : "Candle",
"lastName" : "Bangle"
}
] ,
"out" : [
{
"firstName" : "Bonnie",
"lastName" : "Clooney"
},
{
"firstName" : "Clyde",
"lastName" : "Hyde"
}
]
}
}
}
}
界面:
public interface APIInterface {
@GET("/")
Call<List<In>> getInUsers();
@GET("/")
Call<List<Out>> getOutUsers();
}
我从http://www.jsonschema2pojo.org/得到模型
在示例类中只有消息和planId。我最初是在接口中调用示例类。但认为错误可能是因为这个所以将其更改为 List 但没有。
来自网站的 POJO 代码:
>
> -----------------------------------com.example.Example.java-----------------------------------
>
> package com.example;
>
> import com.google.gson.annotations.Expose; import
> com.google.gson.annotations.SerializedName;
>
> public class Example {
>
> @SerializedName("message") @Expose private String message;
> @SerializedName("planData") @Expose private PlanData planData;
>
> public String getMessage() { return message; }
>
> public void setMessage(String message) { this.message = message; }
>
> public PlanData getPlanData() { return planData; }
>
> public void setPlanData(PlanData planData) { this.planData = planData;
> }
>
> }
> -----------------------------------com.example.In.java-----------------------------------
>
> package com.example;
>
> import com.google.gson.annotations.Expose; import
> com.google.gson.annotations.SerializedName;
>
> public class In {
>
> @SerializedName("firstName") @Expose private String firstName;
> @SerializedName("lastName") @Expose private String lastName;
>
> public String getFirstName() { return firstName; }
>
> public void setFirstName(String firstName) { this.firstName =
> firstName; }
>
> public String getLastName() { return lastName; }
>
> public void setLastName(String lastName) { this.lastName = lastName; }
>
> }
> -----------------------------------com.example.Out.java-----------------------------------
>
> package com.example;
>
> import com.google.gson.annotations.Expose; import
> com.google.gson.annotations.SerializedName;
>
> public class Out {
>
> @SerializedName("firstName") @Expose private String firstName;
> @SerializedName("lastName") @Expose private String lastName;
>
> public String getFirstName() { return firstName; }
>
> public void setFirstName(String firstName) { this.firstName =
> firstName; }
>
> public String getLastName() { return lastName; }
>
> public void setLastName(String lastName) { this.lastName = lastName; }
>
> }
> -----------------------------------com.example.PlanData.java-----------------------------------
>
> package com.example;
>
> import com.google.gson.annotations.Expose; import
> com.google.gson.annotations.SerializedName;
>
> public class PlanData {
>
> @SerializedName("planId") @Expose private String planId;
> @SerializedName("votesData") @Expose private VotesData votesData;
>
> public String getPlanId() { return planId; }
>
> public void setPlanId(String planId) { this.planId = planId; }
>
> public VotesData getVotesData() { return votesData; }
>
> public void setVotesData(VotesData votesData) { this.votesData =
> votesData; }
>
> }
> -----------------------------------com.example.Votes.java-----------------------------------
>
> package com.example;
>
> import java.util.List; import com.google.gson.annotations.Expose;
> import com.google.gson.annotations.SerializedName;
>
> public class Votes {
>
> @SerializedName("in") @Expose private List<In> in = null;
> @SerializedName("out") @Expose private List<Out> out = null;
>
> public List<In> getIn() { return in; }
>
> public void setIn(List<In> in) { this.in = in; }
>
> public List<Out> getOut() { return out; }
>
> public void setOut(List<Out> out) { this.out = out; }
>
> }
> -----------------------------------com.example.VotesData.java-----------------------------------
>
> package com.example;
>
> import com.google.gson.annotations.Expose; import
> com.google.gson.annotations.SerializedName;
>
> public class VotesData {
>
> @SerializedName("votes") @Expose private Votes votes;
>
> public Votes getVotes() { return votes; }
>
> public void setVotes(Votes votes) { this.votes = votes; }
>
> }
【问题讨论】:
-
提供你的 PoJO 的代码