我对Retrofit和RX很陌生,我正在尝试解析以下JSON:
{
"result":
{
"offset": 0,
"limit": 2,
"count": 408,
"sort": "",
"results":[
{
"_id": "1",
"iid": "338",
"sv": "0",
"sd": "20000101000000",
"vtyp": "1",
"sno": "0001",
},
{
"_id": "2",
"iid": "339",
"sv": "0",
"sd": "20000101000000",
"vtyp": "1",
"sno": "0001",
}
]
}
}
我只对“结果”中包含的对象数组感兴趣。从我所能找到的情况来看,我应该实现一个JsonDeserializer来获取这些数据,并在构建RestAdapter时使用.setConverter。我现在拥有的是:
class MyDeserializer implements JsonDeserializer<Pojo> {
@Override
public Station deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
JsonElement element = json.getAsJsonObject().get("results");
return new Gson().fromJson(element, Pojo.class);
}
我想让改装电话回来
Observable<List<Pojo>>
表示“结果”中的对象的
我的Pojo.class看起来是这样的:
public class Pojo {
public String _id;
public String iid;
public String sv;
public String sd;
public String vtyp;
}
现在写,当我试图调用API时,我得到了这个错误,所以我想我在Json反序列化中出了点问题:
retrofit.RetrofitError: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
任何帮助都将不胜感激!
发布于 2015-10-13 03:29:40
您需要创建以下三个pojo类
在活动中编写下面的代码
private RestAdapter restAdapter;
private ApiListeners apiListener;
restAdapter = new RestAdapter.Builder().setLogLevel(RestAdapter.LogLevel.FULL).setEndpoint("Your Base Url").build();
apiListener = restAdapter.create(ApiListeners.class);
apiListener.getData(new Callback<MyPojo>()
{
@Override
public void success(MyPojo pojo, Response response)
{
}
@Override
public void failure(RetrofitError error)
{
}
});
创建下面的侦听器
public interface ApiListeners
{
@GET("/yourApiTag")
public void getData(retrofit.Callback<MyPojo> responseVo);
}
https://stackoverflow.com/questions/33101155
复制