【问题标题】:Configure RestAssured to use GSON over Jackson?配置 RestAssured 以在 Jackson 上使用 GSON?
【发布时间】:2018-03-29 09:35:03
【问题描述】:

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

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

【问题讨论】:

    标签: java rest gson rest-assured


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      这在 Kotlin 中对我有用:

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

      【讨论】:

        【解决方案3】:

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

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

        此外,还描述了explicit serializerdeserializer 的使用。

        序列化:

        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 配置为默认使用 GSON。序列化/反序列化很清楚,这正是我正在做的,但我的问题是关于 RestAssured 的全局配置。对每个调用都使用 GSON 进行显式序列化实际上并不可行。
        猜你喜欢
        • 2018-05-05
        • 2020-09-11
        • 2020-04-15
        • 1970-01-01
        • 2014-12-13
        • 2017-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多