Вы можете использовать JsonDeserializer
, импортировать в свой файл Gradle
com.squareup.retrofit2: converter-gson: 2.1.0
и использовать класс ниже
public static class MyDeserializer implements JsonDeserializer<YourResponseModel> {
@Override
public YourResponseModel deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
YourResponseModel response = new YourResponseModel();
JsonObject jsonObject = json.getAsJsonObject();
JsonObject university = jsonObject.getAsJsonObject("university");
ArrayList<String> universities = new ArrayList<>();
try {
JSONObject object = new JSONObject(university.toString());
Iterator<String> iter = object.keys();
while (iter.hasNext()) {
String key = iter.next();
try {
String value = object.getString(key);
universities.add(value);
} catch (JSONException e) {
Log.e(TAG, "deserialize: ",e );
}
}
} catch (JSONException e) {
e.printStackTrace();
}
response.university = universities;
return response;
}
}
Создайте новый GsonBuilder для JsonDeserializer
Gson gson = new GsonBuilder()
.registerTypeAdapter(YourResponseModel.class, new MyDeserializer())
.create();
и, наконец, установите его в Retrofit Builder
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
Вы можете получить дополнительную информацию из этого блог