我正在使用Spring Web MVC服务器的系统。浏览器客户端将JSON数据传输对象上载到服务器以进行保存。
在调用控制器之前,使用Jackson自动反序列化JSON。控制器方法在其参数列表中包含反序列化对象:
@RequestBody MyDto myDto,
它正在运作,但现在已经停止了。问题是错误消息没有让我对失败的内容有所了解。
我在服务器输出中遇到此异常:
org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/json;charset=UTF-8' not supported
我也尝试将参数更改为String而不是对象(@RequestBody String myDto)。然后我用Gson而不是Jackson来看看它是否会起作用或给出任何见解:
try {
MyDto dto = (new Gson().fromJson(MyDto, MyDto.class));
log.debug(dto.toString());
} catch ( Exception e) {
e.printStackTrace();
}
这不会引发任何异常。它只是创建一个新的MyDto对象,所有字段都为null。
我想我改变了对象中的某些内容,直到我在那里进行更改后才能从JSON字符串反序列化。我以前用琐碎的对象看过几次这个场景。当我仔细观察时,总会出现场不匹配。在这种情况下,MyDto是一个更大的对象,是其他对象的子类。
有没有办法让Jackson或Gson告诉我哪些领域导致失败?