我面對每次我做一個服務器請求下面的錯誤,因爲我從改型1.9遷移到2.0改造2和GSON java.lang.IllegalArgumentException異常:字段映射包含空值用於密鑰
java.lang.IllegalArgumentException: Field map contained null
value for key 'installments'.
我所說的方法獲取一個Map,如下面的代碼的所有參數:
@FormUrlEncoded
@POST("/api/method")
Call<Response<Payment>> pay(@FieldMap Map<String, String> fields);
但目前看來,每當我們有一個NULL值的條目之一,那麼它拋出一個異常,甚至不執行請求。
我們也在使用Dagger 2。這是GSON如何與Converter.Factory創建:
@Provides
@Singleton
Converter.Factory provideGsonConverterFactory() {
Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd hh:mm:ss")
.setPrettyPrinting()
.create();
return GsonConverterFactory.create(gson);
}
之前遷移到改造2.0我們沒有這個問題,這是奇怪的。
事實上,傑克遜有一個屬性,它會做到這一點:
ObjectMapper mapper = new ObjectMapper().configure(SerializationConfig
.Feature.WRITE_NULL_MAP_VALUES, false);
誰引發此錯誤,gson或retrofit/okhhtp? –
一開始我以爲是GSON,不過後來我發現它是改造的。檢查行208 https://github.com/square/retrofit/blob/master/retrofit/src/main/java/retrofit2/ParameterHandler.java –
順便說一句,我仍然有興趣知道如何做到這一點。 –