Java com.fasterxml.jackson.databind.JsonMappingException由于新的maven条目

Java com.fasterxml.jackson.databind.JsonMappingException由于新的maven条目,java,json,maven,jackson,rest-assured,Java,Json,Maven,Jackson,Rest Assured,下面是测试代码,到目前为止,它工作得非常好,但是现在它抛出了下面提到的异常 import com.google.gson.JsonObject; import com.google.gson.JsonParser; import static io.restassured.RestAssured.given; import io.restassured.response.Response; RequestSpecification spec = new RequestSpecBuilder()

下面是测试代码,到目前为止,它工作得非常好,但是现在它抛出了下面提到的异常

import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import static io.restassured.RestAssured.given;
import io.restassured.response.Response;

RequestSpecification spec = new RequestSpecBuilder().setBaseUri(someBaseUri).setBasePath(someEndpoint).build();
JsonParser parser = new JsonParser();
JsonObject jsonObject = parser.parse("{\r\n\"otp\":\""+sentOtp+"\",\r\n\"otpToken\":\""+otpToken+"\"\r\n}").getAsJsonObject();
response = given().spec(spec).headers("key","value").body(jsonObject).when().post(); //the exception is thrown at this line
以下是异常跟踪:

com.fasterxml.jackson.databind.JsonMappingException: JsonObject (through reference chain: com.google.gson.JsonObject["asString"])
    at com.google.gson.JsonElement.getAsString(JsonElement.java:191)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.get(BeanPropertyWriter.java:679)
    at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:534)
    at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:597)
    at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:142)
    at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:118)
    at com.fasterxml.jackson.databind.ObjectMapper.writeValue(ObjectMapper.java:1819)
    at com.fasterxml.jackson.databind.ObjectMapper$writeValue$0.call(Unknown Source)
    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:133)
    at io.restassured.internal.mapping.Jackson2Mapper.serialize(Jackson2Mapper.groovy:53)
    at io.restassured.internal.mapping.Jackson2Mapper.serialize(Jackson2Mapper.groovy)
    at io.restassured.mapper.ObjectMapper$serialize.call(Unknown Source)
    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:125)
    at io.restassured.internal.mapping.ObjectMapping.serializeWithJackson2(ObjectMapping.groovy:181)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
    at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite$StaticMetaMethodSiteNoUnwrapNoCoerce.invoke(StaticMetaMethodSite.java:151)
    at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.callStatic(StaticMetaMethodSite.java:102)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:56)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:194)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:214)
    at io.restassured.internal.mapping.ObjectMapping.serialize(ObjectMapping.groovy:130)
    at io.restassured.internal.mapping.ObjectMapping$serialize.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
    at io.restassured.internal.RequestSpecificationImpl.body(RequestSpecificationImpl.groovy:829)
    ...
在隔离和查看测试项目的提交历史时,我发现删除下面的代码块可以神奇地解决问题,而将其放回pom.xml会使我再次遇到原始问题

 <dependency>
     <groupId>io.rest-assured</groupId>
     <artifactId>json-schema-validator</artifactId>
     <version>3.0.3</version>
  </dependency>
  <dependency>
     <groupId>com.github.fge</groupId>
     <artifactId>json-schema-validator</artifactId>
     <version>2.2.6</version>
  </dependency>
  <dependency>
     <groupId>com.github.fge</groupId>
     <artifactId>json-schema-core</artifactId>
     <version>1.2.5</version>
  </dependency>

放心吧
json模式验证器
3.0.3
com.github.fge
json模式验证器
2.2.6
com.github.fge
json模式核心
1.2.5

请提供帮助。

如果要传递Gson,必须明确指定序列化程序:

given().log().all().contentType(ContentType.JSON).headers("key", "value").body(jsonObject, ObjectMapperType.GSON).when().post();

实际上
contentType(contentType.JSON)
会让你的输出变得漂亮

啊!我不知道。谢谢你的信息。但是,作为一种解决方法,我修改了代码,直接按原样传递字符串,而不是将其作为JsonObject传递给
body()
方法。但我会接受你的回答,因为这对我来说也适用是的,直接传递字符串更简单。