2017-08-26 4 views
0

Je tente actuellement de désérialiser un objet JSON qui contient des centaines d'objets avec des structures identiques, comme ceci:désérialisation JSON avec gson et moderniser

“data”: { 
    “1” { 
     “id” : 1 
     “name” : “sample” 
     }, 
     … 
    “1000” { 
     “id” : 1000 
     “name” : “sample” 
     } 
} 

Comment pourrais-je aller sur le faire avec gson, la modernisation et rxjava? La seule façon dont je peux penser est de faire ce qui suit qui semble irréalisable.

public class Data { 

    @SerializedName(“1”) 
    private Item _1; 
    … 
    @SerializedName(“1000”) 
    private Item _1000; 

    Item getItem_1() { 
     return _1; 
    } 

    void setItem_1(Item _1) { 
     this._1 = _1; 
    } 
    … 
    Item getItem_1000() { 
     return _1000; 
    } 

    void setItem_1000(Item _1000) { 
     this._1000 = _1000; 
    } 
} 

Répondre

0

Plutôt que de créer une classe pour "data", utilisez Map<String, Item>. Tous les "1" ... "1000" seront les clés de la carte, et vous pouvez les utiliser ou simplement les ignorer et utiliser Map.values().

0

Vous devez modifier la structure de votre format json. Utilisez le tableau (crochets) au lieu de 1000 objets (accolades).

{ 
“items”: [ 
    { 
    “id” : 1 
    “name” : “sample” 
    }, 
    … 
    { 
    “id” : 1000 
    “name” : “sample” 
    } 
] 
} 

Ensuite, vos classes seraient comme ci-dessous:

class Data{ 
    Item[] items; 

    Item getItem(int position){ 
     return items[position]; 
    } 

} 

class Item{ 
    int id; 
    String name; 
}