2016-08-03 17 views
1

私はこのJSONを持っている:Retrofit2で解析するGSONカスタムフィールドは - アンドロイド

{ 
    "attributes": { 
     "date": "2016-01-01" 
    }, 
    "first": "05:33", 
    "second": "05:50", 
    "third": "07:22" 
} 

通常、我々はGsonの改造パーサーを使用して、このJSONを解析するために、このような何かを:

Class MyObject { 
    @SerializedName("attributes") 
    Attribues attributes; 
    @SerializedName("first") 
    String first; 
    @SerializedName("second") 
    String second; 
    @SerializedName("third") 
    String third; 
} 

そして

Class Attributes { 
    @SerializedName("date") 
    String date; 
} 

私がやりたいことはこれです:

Class MyObject { 
    // I want date to be here and ignoring the attributes key <--- 
    String date; 
    @SerializedName("first") 
    String first; 
    @SerializedName("second") 
    String second; 
    @SerializedName("third") 
    String third; 
} 

どうすればこのことができますか? GSonについての質問の

+0

を使用しています。この回答を見てください - http://stackoverflow.com/questions/35502079/custom-converter-for-retrofit-2 – Divers

+0

しかし、私はretrofitと呼ばれるアンドロイド用のライブラリを使用し、可能であればコンバータを使用します私はコンバータを使用し、それを第2の解決策として使用する方法です。 – MBH

+1

はい、私があなたに与えたリンクはちょうどretrofit2のカスタムJSONコンバータについてのものです – Divers

答えて

2

90%が同じ答えを持っている:私はあなたがカスタムコンバータをやるべきだと思うcustom TypeAdapter

+0

私のクラスに10以上のフィールドがあり、1つのフィールドに問題がある場合、GSonにその特定のフィールドの変換方法を伝えることはできませんが、私のクラスのカスタムアダプタですか?私のクラスは、C#では 'DateTime'の型であるが、Javaでは' Date'という型のTimeフィールドを持っています。 Newtonsoft.Jsonは '2016-11-05T:23:00'のようにシリアル化しましたが、GSonはオブジェクトをデシリアライズしている間にそのフィールドの例外(タイムゾーンインジケータなし)をスローしました。 –

+0

は日付用のタイプアダプタを提供するだけです –

関連する問題