Как извлечь значение поля из ответа REST (json или xml) с помощью Rest Assured?

#rest-assured

#будьте уверены

Вопрос:

Я хочу извлечь значение из строкового ответа REST (json или xml). Я попробовал следующий код:

 final Response response = new ResponseBuilder().setContentType("application/json").setStatusCode(200).setBody("{"message":"hello"}").build();
Object object = response.path("message");
System.out.println(object);
 

Но это компаундирует

 Exception in thread "main" java.lang.NullPointerException: Cannot invoke method getObjectMapperConfig() on null object
    at org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:91)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:48)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
    at org.codehaus.groovy.runtime.callsite.NullCallSite.call(NullCallSite.java:35)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117)
    at io.restassured.internal.RestAssuredResponseOptionsGroovyImpl.jsonPath(RestAssuredResponseOptionsGroovyImpl.groovy:358)
 

Основная причина заключается в том, что объект RestAssuredConfig имеет значение null в RestAssuredResponseOptionsGroovyImpl

Итак, как я могу правильно построить объект ответа из необработанного строкового ответа без get() или post(), поскольку у меня уже есть строковый ответ?

Ответ №1:

Вы можете попробовать следующее:

 RestAssuredResponseOptionsImpl response = new RestAssuredResponseImpl();
response.setConfig(RestAssuredConfig.config());
response.setRpr(new ResponseParserRegistrar());
response.setContentType("application/json");
response.setStatusCode(200);
response.setContent("{"message":"hello"}");
Object message = response.path("message");
System.out.println(message);