Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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
Java JSON反序列化失败洞察_Java_Json_Spring_Jackson_Gson - Fatal编程技术网

Java JSON反序列化失败洞察

Java JSON反序列化失败洞察,java,json,spring,jackson,gson,Java,Json,Spring,Jackson,Gson,我正在使用SpringWebMVC服务器开发一个系统。浏览器客户端将JSON数据传输对象上载到服务器以保存 @RequestBody MyDto myDto, 在调用控制器之前,使用Jackson自动反序列化JSON。控制器方法的参数列表中包含反序列化对象: @RequestBody MyDto myDto, 它一直在工作,但现在停止了。问题是,错误消息没有让我了解失败的原因 @RequestBody MyDto myDto, 我在服务器输出中遇到此异常: @RequestBody MyD

我正在使用SpringWebMVC服务器开发一个系统。浏览器客户端将JSON数据传输对象上载到服务器以保存

@RequestBody MyDto myDto,
在调用控制器之前,使用Jackson自动反序列化JSON。控制器方法的参数列表中包含反序列化对象:

@RequestBody MyDto myDto,
它一直在工作,但现在停止了。问题是,错误消息没有让我了解失败的原因

@RequestBody MyDto myDto,
我在服务器输出中遇到此异常:

@RequestBody MyDto myDto,
org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/json;charset=UTF-8' not supported
我还尝试将参数更改为字符串而不是对象(@RequestBody String myDto)。然后,我用Gson而不是Jackson来查看它是否有效或提供任何见解:

@RequestBody MyDto myDto,
        try {
            MyDto dto = (new Gson().fromJson(MyDto, MyDto.class));
            log.debug(dto.toString());
        } catch ( Exception e) {
            e.printStackTrace();
        }
这不会引发任何异常。它只是创建一个新的MyDto对象,所有字段都为空

@RequestBody MyDto myDto,
我想我更改了对象中的某些内容,在进行更改之前,无法从JSON字符串反序列化它。我以前在一些琐碎的对象上见过这种场景。当我仔细观察时,总是会发现字段不匹配。在本例中,MyDto是一个更大的对象,是其他对象的子类

@RequestBody MyDto myDto,

有没有办法让Jackson或Gson告诉我哪些字段导致了失败?

在我看来,这好像是说不支持JSON。请向我们展示您的完整代码以帮助识别问题。您应该向我们展示您发送对象的确切方式。我肯定你只是在你的请求的上下文类型字段中有一个输入错误。我发现了。MyDto是一个包含其他数据传输对象的类。其中一个未标记为可序列化。不过,jackson应该给出一条错误消息,指出问题所在。所以我不回答这个问题,希望有人能提出一种从jackson获得可理解输出的方法,而不需要检查对象层次结构的每个部分。
@RequestBody MyDto myDto,