отсутствует поле дискриминатора:

#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. На данный момент это работает.