2017-08-21 11 views
1

私のプロジェクトでは、GSONを使用してオブジェクトを直列化および逆シリアル化しています。多くの場合、JSONというオブジェクトのリストをサーバーから取得しますが、リストの最初の要素にのみ関心があります。 @SerializedNameでリストの最初の要素だけをフェッチすることは可能ですか?JSONリストの最初の要素をGSONで解析する

私はこのような何かを考える:@SerializedName("List[0]")

または何あなたが最初の要素だけではなく、リスト全体を解析することをお勧めでしょうか?

+0

おそらくt彼は便利です:https://stackoverflow.com/questions/41323887/partial-gson-deserialization – msanford

答えて

3

カスタムJsonDeserializer使用する必要があります:あなたはシリアル化からいくつかのフィールドを除外したい場合は、あなたの中でそれらを宣言する必要が

GsonBuilder gsonBuilder = new GsonBuilder(); 
gsonBuilder.registerTypeAdapter(MyModel.class, new MyCustomDeserializer()); 
Gson gson = gsonBuilder.create(); 
MyModel model = gson.fromJson(jsonString, MyModel.class); 

:このようなあなたのGsonインスタンスを初期化し、その後

private class MyCustomDeserializer implements JsonDeserializer<MyModel> { 

    @Override 
    public MyCustomDeserializer deserialize(JsonElement json, Type type, 
     JsonDeserializationContext context) throws JsonParseException { 

    // initialize an instance of your model 
    MyModel myModel = new MyModel(); 

    JsonArray jArray = (JsonArray) json; // get json array 
    JsonObject jsonObject = (JsonObject) jArray.get(0); // get first object 

    // do what you want with the first object 
    myModel.setParameter(jsonObject.get("parameter").getAsInt()); 

    // ignore next json objects 
    return myModel; 
    } 
} 

をモデル:transient

private transient String name; // will be ignored from Gson 
関連する問題