Controller 返回 json那些小事
2021/10/7 6:11:29
本文主要是介绍Controller 返回 json那些小事,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
想要将对象转换为json我们需要先在maven中导入一些包。
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.9.0</version> </dependency>
我们测试一下
@RequestMapping(value = "/quick3") @ResponseBody public String save3() throws JsonProcessingException { User user = new User(); user.setName("探索星空"); user.setAge(12); ObjectMapper o = new ObjectMapper(); String s = o.writeValueAsString(user); return String; }
运行结果出现了http 500错误
我又在纯Java中测试了一下
class Solution { public static void main(String[] args) throws JsonProcessingException { User user = new User(); user.setName("探索星空"); user.setAge(12); ObjectMapper o = new ObjectMapper(); String s = o.writeValueAsString(user); System.out.println(s); } } output: {"name":"探索星空","age":12}
一切正常,我又仔细看了下之前报错的信息......
Handler dispatch failed(处理程序调度失败);一般出现这个提示,就是说明有包没有导入。
看了下WEB-INF/lib下的包果然没有。
果断点击file->project structure->artifacts 。put需要的包
再次运行又发现一个新的问题-字符乱码:
还好这个问题比较简单,我们在spring-mvc的配置文件中加入
<!-- 用于使用@ResponseBody后返回中文避免乱码 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="writeAcceptCharset" value="false" /> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean> </list> </property> </bean>
问题顺利解决:
优化配置
每次都要这样恐怕太麻烦了
ObjectMapper o = new ObjectMapper(); String s = o.writeValueAsString(user);
我们可以在spring-mvc的配置文件中加入
<!-- 处理json--> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/> </list> </property> </bean>
这样处理后,只要在Controller中返回需要转化的对象会可以了
@RequestMapping(value = "/quick2") @ResponseBody public User save2() throws JsonProcessingException { User user = new User(); user.setName("探索星空"); user.setAge(12); return user; }
结果:
值得一提的是,这种方法配置的程序会自动加入utf-8头字段声明,我们删去之前处理乱码的代码
结果:
大功告成。
这篇关于Controller 返回 json那些小事的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-18tcpdf可以等待vue动态页面加载完成后再生成pdf吗?-icode9专业技术文章分享
- 2024-11-16Vue3资料:新手入门必读教程
- 2024-11-16Vue3资料:新手入门全面指南
- 2024-11-16Vue资料:新手入门完全指南
- 2024-11-16Vue项目实战:新手入门指南
- 2024-11-16React Hooks之useEffect案例详解
- 2024-11-16useRef案例详解:React中的useRef使用教程
- 2024-11-16React Hooks之useState案例详解
- 2024-11-16Vue入门指南:从零开始搭建第一个Vue项目
- 2024-11-16Vue3学习:新手入门教程与实践指南