ich die folgende Fehlermeldung konfrontiert jedes Mal, wenn ich eine Serveranfrage tun, da ich von Retrofit 1,9 bis 2,0Retrofit 2 und Gson java.lang.IllegalArgumentException: Feld Karte enthaltenen Nullwert für Schlüssel
migriertjava.lang.IllegalArgumentException: Field map contained null
value for key 'installments'.
die Methode, die ich nennen bekommt eine Karte mit allen Parametern wie den folgenden Code:
@FormUrlEncoded
@POST("/api/method")
Call<Response<Payment>> pay(@FieldMap Map<String, String> fields);
aber scheint, dass, wenn wir einen der Einträge mit einem NULL-Wert haben, dann wirft er eine Ausnahme und nicht ausführen, auch die anfordern.
wir verwenden auch Dolch 2. Dies ist, wie die Gson mit einem Converter.Factory erstellt:
@Provides
@Singleton
Converter.Factory provideGsonConverterFactory() {
Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd hh:mm:ss")
.setPrettyPrinting()
.create();
return GsonConverterFactory.create(gson);
}
Vor der Migration 2.0 nachrüsten wir dieses Problem nicht haben, die ungerade ist.
der Tat hat Jackson eine Eigenschaft, die es tun würde:
ObjectMapper mapper = new ObjectMapper().configure(SerializationConfig
.Feature.WRITE_NULL_MAP_VALUES, false);
Wer wirft diesen Fehler, Gson oder Retrofit/okhhtp? –
Am Anfang dachte ich, es war aber GSON, später fand ich heraus, dass es Retrofit war. Überprüfen Sie die Zeile 208 https://github.com/square/retrofit/blob/master/retrofit/src/main/java/retrofit2/ParameterHandler.java –
BTW, ich bin immer noch interessiert zu wissen, wie dies zu tun ist. –