com.fasterxml.jackson.databind.exc.InvalidDefinitionException - PullRequest
0 голосов
/ 08 июня 2019

Я пытаюсь вызвать веб-API, используя spring-boot и webclient.веб-API имеет граф QL.поэтому я передаю параметры с помощью JsonObject следующим образом.

JSONObject variables = new JSONObject();
JSONObject docParam = new JSONObject();
try {
    docParam.put("id", 0);
    docParam.put("name", metadata.get("resourceName"));
    docParam.put("type", metadata.get("Content-Type"));
    docParam.put("datasourceId", 5);

    variables.put("document", docParam);
} catch (Exception e) {
}

LinkedMultiValueMap<String, Object> formData = new LinkedMultiValueMap<String, Object>();
formData.add("query", "mutation ($document: Document, $projectId: Int!) { addDocument { id } }");
formData.add("variables", variables);

WebClient webClient = WebClient.builder().baseUrl("https://localhost:44375/api/graph")
                                    .clientConnector(new ReactorClientHttpConnector(httpClient)).build();

webClient.post().contentType(MediaType.APPLICATION_JSON_UTF8).syncBody(formData).retrieve()
                                    .bodyToMono(String.class).subscribe(response -> {
                                        Extract.saveProcessedFile(response);
                                    });

При отправке вызова веб-клиента я получаю следующую ошибку.

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.json.JSONObject and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: org.springframework.util.LinkedMultiValueMap["variables"]->java.util.LinkedList[0])

Ответы [ 2 ]

0 голосов
/ 10 июня 2019

Преобразование JSONObject в JsonObject сработало для меня.

0 голосов
/ 08 июня 2019

Это выглядит как проблема, если вы посмотрите на следующее обсуждение, которое точно соответствует вашему сценарию.

https://github.com/lukas-krecan/JsonUnit/issues/41

Цитируя ниже,

Исключение в потоке "main" java.lang.IllegalArgumentException: не найден сериализатор для класса org.json.JSONObject и не обнаружены свойства для создания BeanSerializer (во избежание исключения отключите SerializationFeature.FAIL_ON_EMPTY_BEANS)

При использовании как

JSONObject object = new JSONObject ();object.put ( "ABX", "XYZ");JSONObject object1 = new JSONObject ();object1.put ( "QWE", "RTY");CustomMatcher.assertThat (object, JsonMatchers.jsonEquals (object1));

Лукас отметил, что это должно быть исправлено в соответствии с приведенным ниже утверждением.

Спасибо за отзыв.Должно быть исправлено в 1.14.1

Я знаю, что это может не решить вашу проблему, это для вашей справки.Надеюсь, вы можете использовать более высокую версию для ознакомления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...