【发布时间】:2015-08-10 20:50:38
【问题描述】:
我一直在关注其他答案,但是我找不到一个缺少的步骤,这导致调用成功但数据没有被正确解析,因为我进行的第一次调用返回了一个对象列表,但只返回了一个对象都是空的
MyModel.java
public class MyModel {
@SerializedName("url")
private String mUrl;
@SerializedName("name")
private String mName;
@SerializedName("description")
private String mDescription;
}
MyModelDeserializer.java
这只是检查它的数组或对象,并将简单地返回数组
public class MyModelTypeAdapter implements JsonDeserializer<ArrayList<MyModel>>{
@Override
public ArrayList<MyModel> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
ArrayList<MyModel> objects = new ArrayList<>();
if(json.isJsonArray()){
for(JsonElement e : json.getAsJsonArray()){
objects.add((MyModel)context.deserialize(e,MyModel.class));
}
}else if(json.isJsonObject()){
objects.add((MyModel)context.deserialize(json,MyModel.class));
}
return objects;
}
}
其他一些东西
Gson gson = new GsonBuilder()
.registerTypeAdapter(new TypeToken<ArrayList<MyModel>>() {}.getType(), new MyModelTypeAdapter())
.create();
restAdapter = new RestAdapter.Builder()
.setEndpoint(BuildConstants.BASE_URL)
.setConverter(new GsonConverter(gson))
.setClient(new OkClient(okHttpClient))
.setLogLevel(RestAdapter.LogLevel.FULL)
.build();
这是让我困惑的部分,我将什么作为回调的返回类型
@GET(URLConstants.LIST_URL)
void getData(Callback<ArrayList<MyModel>> callback);
编辑 JSON 数据
{
"places": [
{
"url": "www.google.com",
"name": "Google",
"description": "Search engine"
},
{
"url": "www.Facebook.com",
"name": "Facebook",
"description": "Social Network"
},
{
"url": "www.amazon.com",
"name": "Amazon",
"description": "Shopping"
}
]
}
【问题讨论】:
-
你能发布你的json响应吗?
-
@Sree14 我已经发布了 json 数据。它可以是这样的数组,也可以是单个对象。