J'ai un json sous une forme spécifique que je dois désérialiser. Pour ce faire, j'ai pensé à ma meilleure bibliothèque Gson, mais je suis confronté à un problème ici car j'ai des clés qui sont dynamiques.Désérialisation Gson avec modèle client
Je pense que vous comprendrez avec un bon exemple. Voici le JSON:
{
"institution1": {
"_id": "51cc7bdc544ddb3f94000002",
"announce": { },
"city": "Melun",
"coordinates": [
2.65106,
48.528976
],
"country": "France",
"created_at": "2013-06-27T17:52:28Z",
"name": "italien",
"state": "Seine et Marne",
"street": "Avenue Albert Moreau",
"updated_at": "2013-06-27T17:52:28Z"
},
"institution2": {
"_id": "51d1dfa8544ddb9157000001",
"announce": {
"announce1": {
"_id": "51d1e036544ddb9157000002",
"created_at": "2013-07-01T20:02:35Z",
"description": "description formule 1",
"institution_id": "51d1dfa8544ddb9157000001",
"title": "formule dejeune",
"type": "restoration",
"updated_at": "2013-07-01T20:02:35Z"
},
"announce2": {
"_id": "51d1e074544ddb9157000003",
"created_at": "2013-07-01T20:03:08Z",
"description": "description formule soir",
"institution_id": "51d1dfa8544ddb9157000001",
"title": "formule soiree",
"type": "restoration",
"updated_at": "2013-07-01T20:03:08Z"
}
},
"city": "Melun",
"coordinates": [
2.65106,
48.528976
],
"country": "France",
"created_at": "2013-07-01T19:59:36Z",
"name": "restaurant francais chez pierre",
"state": "Seine et Marne",
"street": "Avenue Albert Moreau",
"updated_at": "2013-07-01T19:59:36Z"
}
}
Vous pouvez aller here pour une meilleure vue. Donc, je créé une classe pour le faire, JsonModel.java
public class JsonModel
{
public HashMap<String, Institution> entries;
public static class Institution
{
public String _id;
public HashMap<String, Announce> announce;
public String city;
public String country;
public List<Double> coordinates;
public String created_at;
public String name;
public String state;
public String street;
public String updated_at;
}
public static class Announce
{
public String _id;
public String created_at;
public String description;
public String institution_id;
public String title;
public String type;
public String updated_at;
}
}
Et puis, j'ai demandé Gson désérialiser qu'avec le code suivant:
JsonModel data = new Gson().fromJson(json, JsonModel.class);
Comme données est nulle, je présume que ça ne marche pas comme je m'y attendais ... Et j'ai pensé utiliser HashMap car je ne connais pas à l'avance la clé comme institution1, institution2, ... Qu'en penses-tu? Puis-je faire cela ?
Et s'il vous plaît ne me dites pas d'utiliser le support, je rêve juste d'avoir ceux-ci!
Merci d'avance!
EDIT: j'ai pu faire ce travail chose en ajoutant un objet racine
{
"root":{ ..the json.. }
}
ET changer
public HashMap<String, Institution> entries;
par
public HashMap<String, Institution> root;
Ainsi, le problème est-il besoin de reconnaître le sapin st élément mais en fait je ne serai pas en mesure de modifier le json, y at-il un moyen de le faire différemment?
Je pensais à ajouter ce json = "{\" root \ ":" + json + "}" MAIS pas vraiment sympa ... – azerto00