我正在使用像这样的改造:
final RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(URL)
.build();
final ApiEndpointInterface apiService = restAdapter.create(ApiEndpointInterface.class);
apiService.getData(userId, new Callback<UserData>() {
@Override
public void success(UserData userData, Response response) {
// get data
}
@Override
public void failure(RetrofitError retrofitError) {
retrofitError.printStackTrace();
}
});
它请求的JSON采用以下形式:
{
"success":true,
"data":[
{
"id":"11",
"name":"John"
}
]
}
如何在name
Retrofit回调中访问用户的success
?
这是我的模特。的的UserData :
public class UserData {
@Expose
private Boolean success;
@Expose
private List<User> data = new ArrayList<User>();
/**
*
* @return
* The success
*/
public Boolean getSuccess() {
return success;
}
/**
*
* @param success
* The success
*/
public void setSuccess(Boolean success) {
this.success = success;
}
/**
*
* @return
* The data
*/
public List<User> getData() {
return data;
}
/**
*
* @param data
* The data
*/
public void setData(List<User> data) {
this.data = data;
}
}
用户:
public class User {
@Expose
private String id;
@SerializedName("user_id")
@Expose
private String name;
@SerializedName("name")
/**
*
* @return
* The id
*/
public String getId() {
return id;
}
/**
*
* @param id
* The id
*/
public void setId(String id) {
this.id = id;
}
/**
*
* @return
* The message
*/
public String getName() {
return name;
}
/**
*
* @param message
* The message
*/
public void setName(String name) {
this.name = name;
}
}
答案 0 :(得分:0)
使用GsonConveter反序列化嵌套类
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(URL). setConverter(new GsonConverter(new GsonBuilder()
.registerTypeAdapter(UserData.class, new ExplorerDeserializerJson())
.create()))
.build();
public class ExplorerDeserializerJson implements sonDeserializer<UserData> {
@Override
public UserData deserialize(JsonElement je, Type type, JsonDeserializationContext jdc)
throws JsonParseException {
UserData userdata= new UserData();
JsonArray jsonArray = je.getAsJsonArray();
Log.d(TAG,"Trying");
Gson gson = new Gson();
for(JsonElement element : jsonArray){
JsonObject jsonObject = element.getAsJsonObject();
User userid= gson.fromJson(jsonObject.get("id"), User.class);
userdata.addgallery(userid);
}
return userdata;
}
答案 1 :(得分:0)
为什么@SerializedName低于变量? “id”的名称也与json匹配,因此您不需要@SerializedName注释