Created
June 20, 2019 08:15
-
-
Save CodeK1988/38121c87b7429ca57466e5cd145f5508 to your computer and use it in GitHub Desktop.
Gson parse same field name but different types
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
https://stackoverflow.com/questions/28319473/gson-same-field-name-different-types