Java 如何在改造中处理以下JSON?给出了无效的双精度错误?

Java 如何在改造中处理以下JSON?给出了无效的双精度错误?,java,android,json,retrofit2,gson,Java,Android,Json,Retrofit2,Gson,错误:com.google.gson.JsonSyntaxException:java.lang.NumberFormatException:Invalid double:“58403fa09251417f7400b62a” 下面是我解析的代码: { "id": "297761", "results": [{ "id": "58403fa09251417f7400b62a", "iso_639_1": "en", "iso_3166_1": "US

错误:com.google.gson.JsonSyntaxException:java.lang.NumberFormatException:Invalid double:“58403fa09251417f7400b62a”

下面是我解析的代码:

{
"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"
   }]
}
在Java中,除了“size”属性为整数外,所有数据都以字符串格式存储,使用了序列化数据名的Arraylist

改装方法:-

@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); 
} 
private ArrayList getTrailers(字符串id){
APIs接口apiService=
ApiClient.getClient().create(apinterface.class);
Call=null;
call=apiService.getMovieTrailers(id,BuildConfig.THE_MOVIE\u DB\u API\u键);
call.enqueue(新回调(){
@凌驾
public void onResponse(调用调用,响应响应){
movieTrailers=(ArrayList)response.body().getTrailerResults();
Log.d(标记“联系的服务器:”+call.request().url());
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
//由于请求失败,此处记录错误
Log.d(标记“联系的服务器:”+call.request().url());
Log.e(TAG,t.toString());
}
});
回归电影人;
}

因为改型为URL返回了整个JSON结果

我使用serializable遍历所有值:

  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;
}

张贴您试图解析/使用它的代码。很明显,该值不是对应于mId的双精度值?那么,请检查您是否正在解析正确的“id”,因为有两个称为“id”的索引,它们是不同的对象。先生,您能描述一下吗?您应该解释一下您的操作。发布整个工作流、整个方法(实例调用、进行调用、解析器等)。是否有一点您试图将“id”索引解析为double?
@SerializedName("id")
private int id;
@SerializedName("results")
private List<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;