@ResponseBody对象有空属性报错

项目中没有使用fastjson解析字符串, 原因是fastjson经常爆出漏洞, 服务器安全监测不通过.

项目中使用hutool工具类操作字符串,在@ResponseBody序列化时结果值为 null 会报异常

org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class cn.hutool.json.JSONNull]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class cn.hutool.json.JSONNull and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.tgpms.utils.Result["data"]->cn.hutool.json.JSONObject["avatar"])

解决办法: 注册一个objectMapper覆盖掉默认的

  @Bean
    public ObjectMapper objectMapper() {
        return new ObjectMapper().disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
    }

解决方法二

不使用SpringBoot默认的jackson进行对象json化,手动使用其他json框架如fastJSON进行json化然后返回。

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>x.x.x</version>
</dependency>

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当使用`@RequestMapping`注解来处理请求时,通常会将方法的返回值作为响应返回给客户端。如果返回的是字符串,那么默认情况下,Spring会尝试将该字符串解析为视图名称,并根据视图名称去寻找对应的视图模板进行渲染。 如果你在使用`@RequestMapping`注解时返回字符串报错,可能有以下几个原因: 1. 缺少视图解析器:在Spring MVC中,需要配置视图解析器来解析视图名称。你可以在Spring配置文件中添加如下配置来配置视图解析器: ```xml <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/" /> <property name="suffix" value=".jsp" /> </bean> ``` 上述配置将会将视图名称解析为`/WEB-INF/views/`目录下的以`.jsp`结尾的文件。 2. 返回的字符串没有对应的视图模板:如果返回的字符串没有对应的视图模板,那么就会报错。请确保你的项目中存在对应的视图模板文件。 3. 返回的字符串没有被正确处理:如果你希望返回的字符串直接作为响应内容返回给客户端,而不是作为视图名称进行解析,可以使用`@ResponseBody`注解来标记方法。例如: ```java @RequestMapping("/example") @ResponseBody public String example() { return "Hello, World!"; } ``` 这样返回的字符串就会直接作为响应内容返回给客户端。 希望以上解答对你有帮助!如果还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值