当前位置: 首页 > 知识库问答 >
问题:

如何在放心中访问底层的Jackson ObjectMapper?

经俊茂
2023-03-14

我需要放心地配置底层的Jackson ObjectMapper。我正在使用REST Assured编写REST API测试,我需要定义一些过滤器来注册ObjectMapper,它用于将我的对象序列化到JSON:

    String newTestSuite = "{\"name\":\"Added through Rest API\",\"description\":\"Test Description\",\"steps\":[]}";

    FilterProvider filters = new SimpleFilterProvider().addFilter("createNewTestSuite", new NewTestSuiteFilter());
    ObjectMapper om = new ObjectMapper();
    om.setFilters(filters);

    try {
        TestSuite ts = om.readValue(newCaspianTest, TestSuite.class);

        RequestSpecification requestSpec = new RequestSpecBuilder()
            .setBaseUri("https://somesite.com")
            .setBody(ts)
            .setUrlEncodingEnabled(false)
            .build();

        ResponseSpecification responseSpec = new ResponseSpecBuilder()
            .expectStatusCode(200)
            .expectStatusLine(Matchers.containsString("200 OK"))
            .build();

        RestAssured.given()
            .auth().basic("testUser","testPassword")
            .spec(requestSpec)
            .log().all()
            .post("/restendpoint")
                .then()
                .log().all()
                .spec(responseSpec);

    } catch(JsonParseException jpe) {

    } catch(JsonMappingException jme) {

    } catch(IOException ioe) {

    }
}

}

共有3个答案

陈昊昊
2023-03-14

@sanj的回答非常有帮助。我不得不稍微修改一下,因为我使用的是 RestAsureMockMvc。

这是我如何配置RestAssuredMockMvc来使用snake_case而不是CamelCase的:

RestAssuredMockMvc.config = RestAssuredMockMvcConfig.config().objectMapperConfig(new ObjectMapperConfig().jackson2ObjectMapperFactory(
            (type, s) -> {
                ObjectMapper objectMapper = new ObjectMapper();
                objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
                return objectMapper;
            }
    ));
朱修真
2023-03-14

这将为您提供一个在后端开发人员决定添加新字段时不会爆炸的对象映射器。

RestAssured.config = RestAssuredConfig.config().objectMapperConfig(new ObjectMapperConfig().jackson2ObjectMapperFactory(
    new Jackson2ObjectMapperFactory() {
      @Override
      public ObjectMapper create(Type cls, String charset) {
        ObjectMapper om = new ObjectMapper().findAndRegisterModules();
        om.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        return om;
      }          

    }
));
袁河
2023-03-14

您可以尝试以下操作:

RestAssured.config = RestAssuredConfig.config().objectMapperConfig(new ObjectMapperConfig().jackson2ObjectMapperFactory(
new Jackson2ObjectMapperFactory() {
        @Override
        public ObjectMapper create(Class aClass, String s) {
            FilterProvider filter = new SimpleFilterProvider().addFilter(...);
            ObjectMapper objectMapper = new ObjectMapper();
            objectMapper.setFilters(filter);
            return objectMapper;
        }
    }
));
 类似资料:
  • 我知道设计无法通过中断来控制其执行,但我想你们中的一些人可能有这个问题。s是组成异步执行的非常好的方法,但考虑到当未来被取消时您希望底层执行被中断或停止的情况,我们如何做到这一点?或者我们必须接受任何取消或手动完成的都不会影响在那里工作以完成它的线程? 在我看来,这显然是一项无用的工作,需要执行者的时间。我想知道在这种情况下,什么方法或设计可能会有所帮助? 更新 这是一个简单的测试

  • 我有一个TableView,其基本项目是一个自定义类,即TableAdapter。我正在为TableCells在自定义单元格工厂中创建一个ContextMenu。在菜单项的EventHandler中,我需要访问由菜单显示的特定单元格表示的底层TableAdapter。如果我调用getItem()或getString(),它们似乎都返回对象的String表示形式,但是,我需要对象本身来访问其他字段。

  • 问题内容: 我希望一个html图像与div标签的底部齐平。我似乎找不到解决此问题的方法。 这是我的HTML: 问题是div嵌套在具有填充或边距的其他div中。 问题答案: 在包装的div标签上添加相对位置,然后将图像绝对定位在其中,如下所示: CSS: HTML: 现在,图像位于div的底部。

  • 我有一个具有 oauth2.0 授权授权类型身份验证的 api,其中包含以下步骤 - 获取授权代码的方法,该方法在浏览器中打开需要输入凭据的表单。这将导致一系列后重定向请求,并最终在第三个后响应头中返回授权代码 现在,在主体中发送了一个post请求,其中包含授权类型的授权代码,该授权代码包含客户端凭据和我们从get请求中获得的上述授权代码,并返回访问令牌 这就是邮递员的工作原理。如何使用Rest

  • 本文向大家介绍Python字典的核心底层原理讲解,包括了Python字典的核心底层原理讲解的使用技巧和注意事项,需要的朋友参考一下 字典对象的核心是散列表。散列表是一个稀疏数组(总是有空白元素的数组),数组的每个单元叫做 bucket。每个 bucket 有两部分:一个是键对象的引用,一个是值对象的引用。所有 bucket 结构和大小一致,我们可以通过偏移量来读取指定 bucket。下面通过存储与

  • 比如有对象 我只能按照顺序拿到数组['a', 'b', 'c', 'd', 'f'] 如果想给f赋值, 只能 如果想要写上面这个表达式的通用函数,要怎么写。