Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save CodeK1988/38121c87b7429ca57466e5cd145f5508 to your computer and use it in GitHub Desktop.
Save CodeK1988/38121c87b7429ca57466e5cd145f5508 to your computer and use it in GitHub Desktop.
Gson parse same field name but different types
public class NMPrivilegeDeserializer implements JsonDeserializer<NMPrivilege> {
@Override
public NMPrivilege deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
NMPrivilege fromJson = new Gson().fromJson(json, NMPrivilege.class);
JsonObject jsonObject = json.getAsJsonObject();
if (jsonObject.has("privilege_card")) {
JsonArray privilege_card = jsonObject.getAsJsonArray("privilege_card");
if (privilege_card != null && privilege_card.size() > 0) {
for (int i = 0; i < privilege_card.size(); i++) {
JsonObject asJsonObject = privilege_card.get(i).getAsJsonObject();
if (asJsonObject.has("list")) {
if (asJsonObject.has("style")) {
JsonArray list = asJsonObject.get("list").getAsJsonArray();
if (asJsonObject.get("style").getAsString().equals("2")) {
List<String> listString = new Gson().fromJson(list, new TypeToken<ArrayList<String>>() {
}.getType());
fromJson.getPrivilege_card().get(i).setListx(listString);
} else {
List<NMPrivilege.PrivilegeCardEntity.ListEntity> listString = new Gson().fromJson(list, new TypeToken<ArrayList<NMPrivilege.PrivilegeCardEntity.ListEntity>>() {
}.getType());
fromJson.getPrivilege_card().get(i).setList(listString);
}
}
}
}
}
}
return fromJson;
}
}
val nmPrivilege = GsonBuilder().registerTypeAdapter(NMPrivilege::class.java, NMPrivilegeDeserializer())
.create().fromJson(result, NMPrivilege::class.java)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment