2017-01-24 3 views
0
{ 
"id": "297761", 
"results": [{ 
     "id": "58403fa09251417f7400b62a", 
     "iso_639_1": "en", 
     "iso_3166_1": "US", 
     "key": "CmRih_VtVAs", 
     "name": "Official Trailer #1", 
     "site": "YouTube", 
     "size": 1080, 
     "type": "Trailer" 
    }] 
} 

エラー:com.google.gson.JsonSyntaxException:java.lang.NumberFormatException:無効なダブル:Retrofitで次のJSONを処理する方法は?エラーは無効なダブルですか?

@SerializedName("id")private String mId; 
@SerializedName("iso_639_1")private String mLanguage; 
@SerializedName("iso_3166_1")private String mLanguage2; 
@SerializedName("key")private String mKey; 
@SerializedName("name")private String mName; 
@SerializedName("site")private String mSite; 
@SerializedName("size")private Integer mSize; 
@SerializedName("type")private String mType; 

    @Override 
public void writeToParcel(Parcel parcel, int i) 
{ 
    parcel.writeString(mId); 
    parcel.writeString(mLanguage); 
    parcel.writeString(mKey); 
    parcel.writeString(mName); 
    parcel.writeString(mSite); 
    parcel.writeInt(mSize); 
    parcel.writeString(mType); 
} 

それ: "58403fa09251417f7400b62a" ここ

は、私はそれを解析してコードですValidatedはJavaで使用されているSerializedNamesのArraylistは、 "size"属性が整数であることを除いて、すべて文字列形式でデータを格納します。

改修方法: -

private ArrayList<MovieTrailer> getTrailers(String id) { 
    ApiInterface apiService = 
      ApiClient.getClient().create(ApiInterface.class); 
    Call<MovieResponse> call = null; 
    call = apiService.getMovieTrailers(id,BuildConfig.THE_MOVIE_DB_API_KEY); 
    call.enqueue(new Callback<MovieResponse>() { 
     @Override 
     public void onResponse(Call<MovieResponse> call, Response<MovieResponse> response) { 
     movieTrailers = (ArrayList<MovieTrailer>) response.body().getTrailerResults(); 
      Log.d(TAG, "server contacted at: " + call.request().url()); 


     } 

     @Override 
     public void onFailure(Call<MovieResponse> call, Throwable t) { 
      // Log error here since request failed 
      Log.d(TAG, "server contacted at: " + call.request().url()); 
      Log.e(TAG, t.toString()); 
     } 
    }); 
    return movieTrailers; 
} 
+4

解析/使用しようとするコードを投稿してください。 Obviusly、その値は二重ではありません – MikeKeepsOnShine

+0

何がmIdに対応していますか? – MikeKeepsOnShine

+0

さて、正しい "id"を解析しているかどうかを確認してください。 "id"という2つのインデックスがあり、異なるオブジェクトです。 – MikeKeepsOnShine

答えて

0

改造はURL

のための全体JSONの結果を返されたとして、私はすべての値を通過するために、シリアライズ使用:

@SerializedName("id") 
private int id; 
@SerializedName("results") 
private List<MovieTrailerResults> movieTrailerResults; 

し、その後でMovieTrailerResultsクラスは以下の変数を追加し、正しく動作します。

@SerializedName("id")private String mId; 
@SerializedName("iso_639_1")private String mLanguage; 
@SerializedName("iso_3166_1")private String mLanguage2; 
@SerializedName("key")private String mKey; 
@SerializedName("name")private String mName; 
@SerializedName("site")private String mSite; 
@SerializedName("size")private Integer mSize; 
@SerializedName("type")private String mType; 
関連する問題