Je veux analyser la réponse JSON suivante avec un objet JSON dynamique,Parse manuellement une partie de l'objet JSON dynamique aux côtés Gson désérialiseur
{
"id": 1,
"last_login": "2016-07-16T12:46:29.621996Z",
"point_of_sales": [
{
"Counter 4": {
"type": "retail",
"id": 6
}
},
{
"Counter 5": {
"type": "retail",
"id": 7
}
},
{
"Counter 6": {
"type": "retail",
"id": 8
}
}
]
}
Ici, les objets nom à l'intérieur « point_of_sales » tableau sont dynamiques qui fait il est difficile d'analyser en utilisant Gson. Voici ce que j'ai essayé jusqu'à présent,
@SerializedName("id")
@Expose
private Integer id;
@SerializedName("last_login")
@Expose
private String lastLogin;
@SerializedName("point_of_sales")
@Expose
private List<Map<String, Counter>> pointOfSales = new ArrayList<Map<String, Counter>>();
.......
getter & setters
classe contre,
@SerializedName("type")
@Expose
private String type;
@SerializedName("id")
@Expose
private Integer id;
.......
getter & setters
En suivant cette procédure, je peux convertir les objets mais ne peut pas les extraire de la carte aux classes POJO.
for (Map<String, Counter> objectMap : response.getPointOfSales())
{
// How to extract the Counter pojo data from map list?
}
J'ai essayé aussi de cette façon, mais rien ne fonctionne,
ArrayList<Counter> pojos = new ArrayList<Counter>();
try {
for (Map<String, Counter> objectMap : result.getPointOfSales()) {
Counter pojo = new Counter();
for (Map.Entry<String, Counter> property : objectMap.entrySet()) {
Method setter = Counter.class.getMethod("set" + property.getKey().substring(0, 1).toUpperCase() + property.getKey().substring(1), property.getValue().getClass());
setter.invoke(pojo, property.getValue());
}
pojos.add(pojo);
}
} catch (Exception e) {
e.printStackTrace();
}
for (Counter pojo : pojos) {
Log.e("result", "" + pojo.getId() + " " + pojo.getType());
}
Est-il possible d'analyser le tableau spécifique en utilisant,
Gson
L'utilisation d'un Duel technique d'analyse pour analyser la partie spécifique manuellement et le reste de la réponse dans Gson?
Je souhaite placer les objets dynamiques enveloppés dans une classe pojo.
vous avez besoin d'un JsonDeserializer pour cela. Si je comprends bien ce que vous voulez faire – Blackbelt
je veux juste faire les objets dynamiques enveloppés dans une classe pojo afin que les données du champ "id", "type" puissent être reçues facilement. –
alors je suppose qu'un custom [JsonDeserializer] (https://google.github.io/gson/apidocs/com/google/gson/JsonDeserializer.html) est ce dont vous avez besoin. – Blackbelt