2017-05-10 10 views
1

ここでRetrofitを使用してGoogle Civic APIを使用します。名前の一致しないオブジェクトのプロパティを逆シリアル化しますか?

ライブラリでは、Electionを使用してAPIを返すモデルを作成する必要があります。基本的にGoogleドキュメントのコピーです。

Election.Java(レトロフィットは、同じ名前のプロパティに応答特性を結合する):

public class Election { 
private long id; 
private String name; 
private String electionDay; 
private String ocdDivisionId; 

public long getId() { 
    return id; 
} 
public void setId(long id) { 
    this.id = id; 
} 
public String getName() { 
    return name; 
} 
public void setName(String name) { 
    this.name = name; 
} 
public String getElectionDay() { 
    return electionDay; 
} 
public void setElectionDay(String electionDay) { 
    this.electionDay = electionDay; 
} 
public String getOcdDivisionId() { 
    return ocdDivisionId; 
} 
public void setOcdDivisionId(String ocdDivisionId) { 
    this.ocdDivisionId = ocdDivisionId; 
} 

}

しかし代表従って矛盾するプロパティ名を有します私はRetrofitがAPIのレスポンスを逆シリアル化する方法を知る方法でこれをモデル化する方法は見当たりません。

代表オブジェクト(JSON):

property name is called (key)

どのように私はレトロフィットが分裂のキーの後という名前の変数プロパティをキャプチャするモデルをデシリアライズしましょうか?

+0

に役立ちますか? –

答えて

0

Gsonコンバータを使用しているとすれば、私は個人的にマップを使用します。他のコンバーターでも同じことが達成できると思いますが、決して使用しませんでした。 divisions配列内のオブジェクトを表し

public class Division { 
    @SerializedName("name") 
    @Expose 
    private String name; 
    @SerializedName("alsoKnownAs") 
    @Expose 
    private List<String> alsoKnownAs = new ArrayList<>(); 
    @SerializedName("officeIndices") 
    @Expose 
    private List<Integer> officeIndices = new ArrayList<>(); 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public List<String> getAlsoKnownAs() { 
     return alsoKnownAs; 
    } 

    public void setAlsoKnownAs(List<String> alsoKnownAs) { 
     this.alsoKnownAs = alsoKnownAs; 
    } 

    public List<Integer> getOfficeIndices() { 
     return officeIndices; 
    } 

    public void setOfficeIndices(List<Integer> officeIndices) { 
     this.officeIndices = officeIndices; 
    } 
} 

:あなたは以下の目的を持っていると言います。その場合、クラスを持つことができます:

private class Divisions { 
    @SerializedName("divisions") 
    @Expose 
    private Map<String, Division> divisions = new HashMap<>(); 
    // ... 
} 

ここで地図の使用方法に注目してください。背後では、Gsonはオブジェクトをシリアライズしてデシリアライズすることができます。 Divisionsクラスは、あなたが私たちに与えたjsonの根です。

希望これは、あなたが `地図 を`てみました

+0

私はトランプが私のアプリでポップアップするのを見て嬉しいと思っていなかった、ああ、あまりにも長い時間がかかった、ありがとう!私のディビジョンモデルでMapを使用すると、すべてがデシリアライズされました。 – Simulan88

関連する問題