IBM/MAX-Image-Caption-Generator

NumberFormatException - $.predictions[0].probability

meetarun-m opened this issue · 1 comments

Hi,

I am trying to call the Image Caption Generator from Android app via RetroFit2.

When i try to test the API with the default image available in the Emulator I am getting the following exception.

My Guess is that this issue is from the API, Please correct me if I am wrong.

com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: Expected an int but was 9.84082025545015e-05 at line 1 column 140 path $.predictions[0].probability
com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:245)
com.google.gson.internal.bind.TypeAdapters$7.read(TypeAdapters.java:235)
com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:129)
com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:220)
com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:41)
com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:82)
com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:61)
com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:129)
com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:220)
retrofit2.converter.gson.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:37)
retrofit2.converter.gson.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:25)
retrofit2.ServiceMethod.toResponse(ServiceMethod.java:119)
retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:218)
retrofit2.OkHttpCall$1.onResponse(OkHttpCall.java:112)
okhttp3.RealCall$AsyncCall.execute(RealCall.java:141)
okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
java.lang.Thread.run(Thread.java:764)

My Bad.

I had this probability variable as Int instead of Float.
@expose
private float probability;

Now able to call the API and receive response without issues.

Hope this answer helps someone. Thanks