我有一个JsonArray,如下所示,并且我正在使用改型发送GET请求。我只想要name和description来自每个JsonObjects。
我得到的错误是 E/Error: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
我应该如何只获取所需的键值?
{
"data": [
{
"id": "GEnAad",
"name": "test project",
"description": "app",
"avatar": null,
"disabled": 0,
"custom_settings": null,
"created_at": "2019-10-14 05:59:41",
"updated_at": "2019-10-14 05:59:41",
},
{
"id": "OEypaY",
"name": "Demo project",
"description": "IBIS V0.25 demo",
"avatar": null,
"disabled": 0,
"custom_settings": null,
"created_at": "2019-10-07 05:26:43",
"updated_at": "2019-10-10 09:56:24",
},
{
"id": "Oaw0ER",
"name": "helloworld",
"description": "helloworld",
"avatar": null,
"disabled": 0,
"custom_settings": null,
"created_at": "2019-11-28 07:39:37",
"updated_at": "2019-11-28 07:39:37",
}
]
}
GET请求:
public interface IbisRepo {
@Headers({"Accept: application/json"})
@GET("/api/projects")
Call<List<ProjectInformation>> getProjectInfo(
@Header("Authorization") String accessToken);
}
ProjectInformation.java:
public class ProjectInformation {
@SerializedName("name")
private String Name;
@SerializedName("description")
private String description;
public String getName() {
return Name;
}
public String getDescription() {
return description;
}
}
MainActivity.java
private ListView listView;
private String accessToken = "accesstoken"
private String API_BASE_URL = "API_BASE_URL"
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById (R.id.pagination_list);
sendNetworkRequest(accessToken);
}
Retrofit.Builder builder = new Retrofit.Builder()
.baseUrl(API_BASE_URL)
.client(okhttpBuilder.build())
.addConverterFactory(GsonConverterFactory.create());
Retrofit retrofit = builder.build();
IbisRepo client = retrofit.create(IbisRepo.class);
Call<List<ProjectInformation>> call = client.getProjectInfo(accessToken);
call.enqueue(new Callback<List<ProjectInformation>>() {
@Override
public void onResponse(Call<List<ProjectInformation>> call, Response<List<ProjectInformation>> response) {
if (!response.isSuccessful()) {
Toast.makeText(MainActivity.this, "Code: " + response.code(), Toast.LENGTH_SHORT).show();
return;
}
List<ProjectInformation> repos = response.body();
listView.setAdapter(new IbisRepoAdapter(MainActivity.this, repos));
Log.d("Success", "onResponse: Hello World");
Toast.makeText(MainActivity.this, "SUCCESS", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(Call<List<ProjectInformation>> call, Throwable t) {
Toast.makeText(MainActivity.this, t.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
}
只需更改您的pojo课:)
public class VoLoginResponse implements Serializable {
private VoLoginData data;
public VoLoginData getData() {
return data;
}
public void setData(VoLoginData data) {
this.data = data;
}
public class VoLoginData implements Serializable {
String name;
String description;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。