#java #json #swagger #retrofit2 #discriminator
Вопрос:
Я использую код, сгенерированный swagger. Когда мой клиент делает запрос, он не может прочитать ответ с сообщением:
java.lang.IllegalArgumentException: missing discriminator field: lt;gt; at com.allot.client.nrf.management.invoker.JSON.getDiscriminatorValue(JSON.java:81) at com.allot.client.nrf.management.invoker.JSON.access$000(JSON.java:43) at com.allot.client.nrf.management.invoker.JSON$2.getClassForElement(JSON.java:60) at io.gsonfire.gson.TypeSelectorTypeAdapterFactory$TypeSelectorTypeAdapter.read(TypeSelectorTypeAdapterFactory.java:65) at io.gsonfire.gson.NullableTypeAdapter.read(NullableTypeAdapter.java:36) at io.gsonfire.gson.HooksTypeAdapter.deserialize(HooksTypeAdapter.java:86) at io.gsonfire.gson.HooksTypeAdapter.read(HooksTypeAdapter.java:54) at retrofit2.converter.gson.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:40) at retrofit2.converter.gson.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:27) at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:243) at retrofit2.OkHttpCall.execute(OkHttpCall.java:204)
Я использую Retrofit2, поэтому я делаю запрос таким образом:
Calllt;NFProfilegt; call - getCall(); Responselt;NFProfilegt; response = call.execute();
И call.execute()
терпит неудачу.
Какая может быть причина? Я читал, что эта проблема может возникнуть из anyOf
allOf
-за схем / in в файлах YAML. Но у меня нет этого в NFProfile
схемах. Я создал своего клиента из TS29510_Nnrf_NFManagement.файл yaml.
Есть какие-нибудь предложения? Кто-нибудь сталкивался с такой проблемой?
Комментарии:
1. Можете ли вы опубликовать определение схемы OpenAPI для рассматриваемого ответа?
2. @Хелен, спасибо за ответ. Я основал этот выпуск. Проблема заключалась в другом объекте, который отвечает за чтение ответов. И у этого объекта в схеме было все, что угодно, одно. Генератор Swagger имеет ошибку и не всегда может правильно генерировать код, если схема содержит allOf, anyOf или oneOf. Я изменил схему, удалил allOf, anyOf и oneOf. На данный момент это работает.