你需要编写一个自定义的 Deserializer,然后循环它并获取 hasmap 的值。
自定义反序列化器:-
public class UserDetailsDeserializer implements JsonDeserializer<AllUserDetailsKeyModel> {
/*
bebebejunskjd:{
"email": "akhilbv1@gmail.com",
"mobileNum": "12345678",
"password": "1234567",
"username": "akhil"}*/
@Override public AllUserDetailsKeyModel deserialize(JsonElement json, Type typeOfT,
JsonDeserializationContext context) throws JsonParseException {
final JsonObject jsonObject = json.getAsJsonObject();
Gson gson = new Gson();
Type AllUserDetailsResponseModel =
new TypeToken<HashMap<String, AllUserDetailsResponseModel>>(){}.getType();
HashMap<String, AllUserDetailsResponseModel> user =
gson.fromJson(jsonObject, AllUserDetailsResponseModel);
AllUserDetailsKeyModel result = new AllUserDetailsKeyModel();
result.setResult(user);
return result;
}
}
cmets 中的代码是我的对象模型,你应该用你的模型类替换AllUserDetailsKeyModel 并将其添加到其余客户端,如下所示:-
private Converter.Factory createGsonConverter() {
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(AllUserDetailsKeyModel.class, new UserDetailsDeserializer());
Gson gson = gsonBuilder.create();
return GsonConverterFactory.create(gson);
}
这是用于改造的自定义转换器。
在您的 onResponse 中,您只需循环使用 hasmaps 并按键获取值,我的模型类如下所示:-
public class AllUserDetailsKeyModel {
private Map<String, AllUserDetailsResponseModel> result;
public Map<String, AllUserDetailsResponseModel> getResult() {
return result;
}
public void setResult(Map<String, AllUserDetailsResponseModel> result) {
this.result = result;
}
}
您可能需要提供一个 T 类型,其中 T 是您的数据类型,而我的模型仅包含一个哈希图和 getter 和 setter。
最后将自定义转换器设置为改造如下:- .addConverterFactory(createGsonConverter())
如果您需要更多说明,请告诉我。