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;
}
解析/使用しようとするコードを投稿してください。 Obviusly、その値は二重ではありません – MikeKeepsOnShine
何がmIdに対応していますか? – MikeKeepsOnShine
さて、正しい "id"を解析しているかどうかを確認してください。 "id"という2つのインデックスがあり、異なるオブジェクトです。 – MikeKeepsOnShine