配置 RestAssured 以使用 GSON 而不是 Jackson?

Configure RestAssured to use GSON over Jackson?

我在使用 RestAssured 的项目中同时拥有 GSON 和 Jackson,我想使用 GSON。官方文档没有提供明确的示例。我尝试了几种配置,但它似乎不起作用。这是我的配置,我是否遗漏了什么?

RestAssured.config = RestAssuredConfig.config()
                .decoderConfig(new DecoderConfig("UTF-8"))
                .encoderConfig(new EncoderConfig("UTF-8", "UTF-8"))
                .objectMapperConfig(new ObjectMapperConfig(GSON));

嗯,作为Rest Assured documentation states,技术的顺序是:

  1. JSON 使用 Jackson 2(Faster Jackson(数据绑定))
  2. JSON 使用 Jackson(数据绑定)
  3. JSON 使用 Gson
  4. XML 使用 JAXB

此外还描述了 explicit serializer or deserializer 的使用。

序列化:

Message message = new Message();
message.setMessage("My messagee");
given().
   body(message, ObjectMapperType.GSON).
when().
  post("/message");

反序列化:

Message message = get("/message").as(Message.class, ObjectMapperType.GSON);

在我的项目中,我通过包装原始 RestAssured.given 方法解决了它

public static RequestSpecification given() {
    return RestAssured.given()
        .config(RestAssured.config()
            .objectMapperConfig(new ObjectMapperConfig(ObjectMapperType.GSON)));
}

这在 Kotlin 中对我有用:

RestAssured.config = RestAssuredConfig.config().objectMapperConfig(objectMapperConfig().defaultObjectMapperType(ObjectMapperType.GSON))