我花了过去的一天,试图找到一个解决办法,但没有找到任何在线资源,解决了这个问题。
我使用Gson为我的应用程序进行消息转换,它在单元测试之外工作得很好。我甚至添加了HttpMessageConverters
bean以优先于Jackson而不是将配置值写入application.yml
。这只在运行应用程序时起作用。
现在我的问题是,如何使用mockmvc
的Gson序列化/反序列化?我有一个带有@serializedname(“field_one”)
批注的类,它的值与实际名称不同。我最接近找到答案的是下面的一个,但没有任何帮助:
https://stackoverflow.com/A/20510028/3948882
如何替换objectmapper
或者让mockmvc
使用Gson而不是Jackson?
编辑:添加更多的上下文:
当我试图发送一个通过Gson转换为Json的model
时,它立即被拒绝(400),因为我对模型中的每个字段都有@NotNull
注释。当它在控制器中反序列化时,它将字段设置为NULL。下面的示例有@valid
,它确保model
签出。
@RequestMapping(value = "accept", method = RequestMethod.POST)
public Model resp(@Valid @RequestBody Model model){
return model;
}
另一方面,当我在没有@valid
的情况下访问一个endpoint,传递一个令Jackson高兴的json,并且返回a模型时,我无法检查任何字段:
mockMvc.perform(
post("/test/accept")
.contentType(MediaType.APPLICATION_JSON)
.content(json))
.andExpect(jsonPath("$.field_one", is("Hello world!")))
例外情况:
java.lang.AssertionError: No value at JSON path "$.field_one", exception: No results for path: $['field_one']
您必须正确设置mockmvc
:
MockMvc mvc = MockMvcBuilders.standaloneSetup(new YourController())
.setControllerAdvice(new SomeExceptionHandler())
.setMessageConverters(new GsonHttpMessageConverter()) //<-- THIS
.build();
我试图使用Gson发送JsonObjects作为响应。这些JsonObjects是手工构造的,而不是使用objectMapper或GSON。我排除了所有与杰克逊有关的依赖关系。它工作得很好很好。后来,我尝试使用SpringFox添加Swagger文档。现在它抛出以下异常:
我正在用Spring(无Spring Boot)构建一个Java客户端,并且必须使用Gson。 我如何告诉Spring使用Gson而不是Jackson? 为了澄清,我使用了反应式WebClient: Pojo应该是这样的: 服务器中的Json是这样的:
Spring Boot 1.4.2参考声明: Springhttp。转换器。首选json映射器=jackson#用于HTTP消息转换的首选json映射器。设置为“gson”以强制使用gson 我们做到了。 我们为首选json映射器设置了gson 但杰克逊还是被利用了。 最后,在排除了Maven中所有向Jackson指出的可传递依赖项之后,我们设法强制Spring Boot使用Gson。 现在的问题
我在一个项目中工作,我想用Swagger来记录它。是一个用Spring Boot实现的项目,我们使用库“com.google.code.Gson”而不是默认的SpringBoot“Jackson”,但是用Gson Swagger不起作用。 杰克逊返回如下: 有人知道我怎么才能让Gson工作吗?
我想在spring boot应用程序中使用像Genson这样的JSON处理器。 当您使用或时,由于这两个库的Spring引导自动配置,您非常舒适。 在这个链接中,有一个很好的指南,可以将替换为。 为了解决我的问题,我创建了和bean但是我应该怎么做才能将这行添加到我的配置中呢? 我需要做除上述之外的任何事情来用库替换吗?
问题内容: 我想做的是从而不是从Volley库中使用一些数据。 以下是用于从服务器中获取JSON对象的代码。 我试图改变到后改为。但这并没有解决。 问题答案: 中的url 不是可选的,并且JSONObject参数用于将带有请求的参数发布到url。 从文档中:http : //afzaln.com/volley/com/android/volley/toolbox/JsonObjectRequest