jav*_*oid 5 android json gson retrofit
我有这个 json,我想使用改造来解析它们。
{
"status": "true",
"data": [
{
"id": "1",
"title": "Hi :)",
"text": "<p>121212</p>",
"cat_id": "1",
"username": "admin",
"coin": "0",
"datetime": "1451508880",
"isShow": "1"
},
{
"id": "3",
"title": " Hi :)",
"text": "Hi :)",
"cat_id": "2",
"username": "Hi :)",
"coin": "20",
"datetime": "1451508880",
"isShow": "1"
},
{
"id": "4",
"title": "a",
"text": "someText",
"cat_id": "1",
"username": "admin",
"coin": "10",
"datetime": "1451982292",
"isShow": "1"
}
]
}
Run Code Online (Sandbox Code Playgroud)
当该 json 处于数组模式时,我的代码工作。但我的问题是如何像上面的示例一样解析嵌套的 json?
这里是我的 javaClass: (statusClass)
public class retroStatus {
@SerializedName("status")
private String status;
@SerializedName("data")
private ArrayList<retroPost> data;
//getters And Setters
}
Run Code Online (Sandbox Code Playgroud)
(retroPost 类)
public class retroPost {
@SerializedName("id")
private int id;
@SerializedName("title")
private String title;
@SerializedName("text")
private String text;
@SerializedName("cat_id")
private int cat_id;
@SerializedName("datetime")
private long datetime;
//getters And Setters
}
Run Code Online (Sandbox Code Playgroud)
(getPostInterface)
public interface getPost {
@GET("get/posts/all")
Call<List<retroStatus>> getPost();
}
Run Code Online (Sandbox Code Playgroud)
(和主代码)
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://mywebsite.it/api/")
.addConverterFactory(GsonConverterFactory.create())
.build();
getPost postService = retrofit.create(getPost.class);
Call<List<retroStatus>> call = postService.getPost();
Callback<List<retroStatus>> callback = new Callback<List<retroStatus>>() {
@Override
public void onResponse(Response<List<retroStatus>> response, Retrofit retrofit) {
if (response.isSuccess()) {
for (retroStatus status : response.body()) {
Log.e("test", "nowStatusIs: " + status.getStatus());
}
} else {
Log.e("test", "Failed");
}
}
@Override
public void onFailure(Throwable t) {
Log.e("test", "onFailure");
}
};
call.enqueue(callback);
Run Code Online (Sandbox Code Playgroud)
现在当运行应用程序时,onFailure 发生了,但是如果主 json 只是在 onejsonArray 中并且只使用 retroPost 来解析那是非常好的工作......我错了吗?
抱歉英语不好...
json 的根节点不是数组,但您将其声明为List<responseStatus>interface getPost。所以你需要使用responseStatus当前的。并使用getter来访问data
@SerializedName("data")
private ArrayList<retroPost> data;
Run Code Online (Sandbox Code Playgroud)
这是数组
| 归档时间: |
|
| 查看次数: |
4090 次 |
| 最近记录: |