Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为jsonPath匹配器正确转换java对象?_Java_Json_Spring_Mockmvc - Fatal编程技术网

如何为jsonPath匹配器正确转换java对象?

如何为jsonPath匹配器正确转换java对象?,java,json,spring,mockmvc,Java,Json,Spring,Mockmvc,我正在为我的控制器编写mockMvc测试,需要验证jsonPath返回值 我尝试了不同的.is和.value映射,但没有成功 Loan loan = new Loan( "0000-0000", "OPEN", LocalDate.now(), LocalDate.now().plusDays(30), new BigDecimal("5

我正在为我的控制器编写mockMvc测试,需要验证jsonPath返回值

我尝试了不同的.is和.value映射,但没有成功

Loan loan = new Loan(
                "0000-0000",
                "OPEN",
                LocalDate.now(),
                LocalDate.now().plusDays(30),
                new BigDecimal("500.0"),
                new BigDecimal("50.0"),
                new BigDecimal("550.0"),
                new ArrayList<>()
        );

    Mockito.lenient()
            .when(loanService.loans())
            .thenReturn(Collections.singletonList(loan));

    String json = MAPPER.writeValueAsString(loan);

    mockMvc.perform(get("/api/loans"))
            .andExpect(jsonPath("$.*").value(json));



Expected :{"id":"0000-0000","status":"OPEN","created":"2019-05-09","dueDate":"2019-06-08","principal":500.0,"interest":50.0,"total":550.0,"extensions":[]}
Actual   :{id=0000-0000, status=OPEN, created=2019-05-09, dueDate=2019-06-08, principal=500.0, interest=50.0, total=550.0, extensions=[]}

这就是我得到的结论,只是不要在这里得到类型。

如果您想将完整的responseBody声明为json,您可以使用MockMvcResultMatchers的content方法

只需将jsonPath$.*.valuejson替换为content.jsonjson,如下所示


当您点击postman上的端点时,响应看起来如何?postman响应[{id:8706-2150,状态:打开,创建:2019-05-09,截止日期:2019-06-08,本金:400,利息:40,总计:440,扩展:[]]
mockMvc.perform(get("/api/loans"))
            .andExpect(content().json(json));