gpt4 book ai didi

java - 如何使用 Spring MockMVC 将 JSON 编码为请求参数

转载 作者:行者123 更新时间:2023-11-30 03:15:36 27 4
gpt4 key购买 nike

我已经尝试了几个小时将 JSON 编码为我正在使用 Spring 的 MockMVC 编写的测试的请求参数,但没有成功。

我的测试看起来像

@Before
public void setUp() {
mockMvc = MockMvcBuilders.standaloneSetup(new TestController())
.build();
}

@Test
public void shouldReturnJSONGeneratedByView() throws Exception {
String sampleJson = "{\"key\":\"value\"}";

String json = UriComponentsBuilder.newInstance()
.path(sampleJson)
.build().encode().toUriString();

mockMvc.perform(MockMvcRequestBuilders.get("/Node?json="+json))
.andExpect(status().isOk());
}

但是到达我的 Controller 的字符串仍然经过编码(“%7B%22key%22:%22value%22%7D”),因此无法反序列化为 JSON。

为了让 Spring 理解编码参数,我缺少什么?

感谢您的帮助

最佳答案

我相信您的 JSON 被编码了两次,因此 Controller 收到一个仍然编码的字符串(仅解码一次后)。

JavaDoc for MockMvcRequestBuilders声明以下关于 get 的第一个参数:

urlTemplate - a URL template; the resulting URL will be encoded

因此我认为您不需要自己对 JSON 进行编码,并且以下内容应该可以工作:

mockMvc.perform(MockMvcRequestBuilders.get("/Node?json={json}", sampleJson))
.andExpect(status().isOk());

关于java - 如何使用 Spring MockMVC 将 JSON 编码为请求参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32730707/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com