Проблема с вводом-выводом Не найден сериализатор для класса org.json.JSONObject и не обнаружено свойств для создания BeanSerializer

не уверен, что происходит, полная ошибка:

Problem with i/o No serializer found for class org.json.JSONObject and no properties        discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS) )

Я пытаюсь отправить запрос PUT в службу RESTful. Я разбираю POST и отправляю измененные пары ключ/значение для «ID» и «включено» для PUT.

@Test(dependsOnMethods= {"Post"})
public void Put() throws IOException  {

logger.logTestActivity("Testing FORM data POST using Excel file");
requestBuilder = new RequestSpecBuilder();

String jsonString = "";
boolean enabledModify = false;

try {
 BufferedReader in = new BufferedReader(new FileReader(
 xmlTest.getParameter("json-post")));

String str;

while ((str = in.readLine()) != null) {
      jsonString += str;
        }

JSONObject jsonObjPut = new JSONObject(jsonString);
jsonObjPut.put("_id", createUserId);
jsonObjPut.put("enabled",enabledModify);

    System.out.println(jsonObjPut.toString());
in.close();

    requestBuilder.setContentType(ContentType.JSON);
    requestSpecification = requestBuilder.build();
    responseBuilder.expectStatusCode(Integer.parseInt(xmlTest
    .getParameter("http-status-code-200")));
    responseBuilder.expectContentType(ContentType.JSON);
    responseSpecification = responseBuilder.build();    
System.out.println(createUserId);

String responseJson = given().body(jsonObjPut).         
when().put("/" + createUserId).asString();

    System.out.println(responseJson);

logger.logTestActivity("Finished testing FORM data POST using Excel file");
} catch (AssertionError e ) {
  logger.logTestActivity(
        "Error testing FORM data post: " + e.getMessage(),logger.ERROR);

      System.out.println("REST URL: " + RestAssured.baseURI + " "
                + RestAssured.port + " " + RestAssured.basePath );
  Assert.fail("Error testing FORM data POST: " + e.getMessage());
        throw e;
} catch (IOException | JSONException e) {
   System.out.println("Problem with i/o" + e.getMessage()); 
    }
}

createUserID — это глобальная переменная, представляющая собой идентификатор, проанализированный из POST.

Файл JSON, который анализируется, выглядит следующим образом:

{
"enabled" : false,
"_id" : "fdse332a-22432d-4432b"
}

В методе перед тестированием я настраиваю resassured со всеми соответствующими конечными точками URL...

Кроме того, PUT также не работает с ошибкой NULLPointerException. Это может быть другой пост в будущем!


person Community    schedule 06.11.2012    source источник


Ответы (2)


Решение: я не преобразовывал свой объект JSON в строку при переходе на resassured.

String responseJson = given().body(jsonObjPut.toString).

Это помогло. Теперь я изменяю свой существующий json с помощью сгенерированного идентификатора и успешно выполняю PUT в службе RESTful.

person Community    schedule 06.11.2012
comment
Вы только что спасли жизнь. Потратил несколько часов, ломая голову над этим. Когда я отлаживал, JSONObject формировался, и я мог видеть через отладчик, что формировалась строка JSON, но он продолжал выдавать это проклятое исключение. Никогда не знал, что вам нужно явно установить toString() для использования. - person Kermit_ice_tea; 26.09.2014

Я также столкнулся с той же проблемой с java Spring rest Api. Он бросал BeanSerializerExcption. Используйте класс JsonNODE вместо JSONObject.

person ketankk    schedule 20.03.2017