JSON对象、中文乱码及时间转换-默然说话20170331备课笔记
2017-03-31 17:02
495 查看
JSON对象(Map对象转JSON)
导入jastjson-1.2.13.jar验证方法
返回值:Object(JSON对象)
@ResponseBody
作用:将标注该注解的处理方法的返回结果直接写入HTTP response Body中,一般会在异步获取数据时使用(ajax)
注意:如果要输出中国字,必须在控制器方法中调用URLEncoder.encode()方法
URLEncoder.encode(str, “UTF-8”);
如果要输出中国字,必须在js中调用decodeURI()方法
控制器端方法示例
@RequestMapping("/checkUserName") @ResponseBody public Object checkUserNameExtist(String name) { Map<String, String> result = new HashMap<String, String>(); //StringUtils是com.mysql.jdbc提供的静态类,在mysql的数据库连接jar中 if (StringUtils.isNullOrEmpty(name)) { //如果要输出中文信息必须进行编码,使用java.net.URLEncoder.encode("中国字","UTF-8")方法 result.put("message", MyUtils.ajaxEncoding("用户名已存在")); } else { Users users = usersService.findUserExist(name); if (users == null) { result.put("message", MyUtils.ajaxEncoding("用户名可以使用")); } else { result.put("message", MyUtils.ajaxEncoding("用户名已存在")); } } return JSONArray.toJSONString(result); }
上面代码中用到的MyUtils代码示例
import java.io.UnsupportedEncodingException; import java.net.URLEncoder; public class MyUtils { public static String ajaxEncoding(String str){ try { str=URLEncoder.encode(str, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return str; } }
jsp页面的ajax示例,使用jquery-1.11.3
<script src="js/jquery.min.js" charset="UTF-8"></script> <script type="text/javascript" charset="UTF-8"> $("#userName").bind("blur",function(){ $.ajax({ type:"POST", url:"checkUserName", data:{name:$("#userName").val()}, dataType:"json",//返回值的数据类型,默认是string success:function(data){ //如果没有指定dataType属性为json,则需要下面代码把字符串转换为JSON对象 //data=$.parseJSON(data); alert(decodeURI(data.message)); } }); }); </script>
解决中文乱码的简单方式
使用@RequestMapping的produces属性简单方便,但每次用都要配置
装配StringHttpMessageConverter,设置编码为UTF-8
supportedMediaTypes属性
指定媒体类型:application/json
字符编码:UTF-8
一次配置,永久搞定
使用@RequestMapping
@RequestMapping(value="/displayUserInfo",method=RequestMethod.GET,produces="{application/json;charset=UTF-8}")
装配StringHttpMessageConverter
<mvc:annotation-driven > <mvc:message-converters> <!-- 解决ajax中文乱码问题 --> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="setSupportedMediaTypes" > <list> <value>application/json;charset=UTF-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>
解决时间对象转JSON时间的格式问题
在实体类的属性上加@JSONField(format=”yyyy-MM-dd”)侵入性强,强耦合,不建议使用
@JSONField(format="yyyy-MM-dd")
配置FastJson的消息转换器-FastJsonHttpMessageConvertor
配置于中
在配置之后,不需要在代码中写JSONArray.toJSONString(user)的代码了,直接返回实体对象即可
只有默认的返回日期格式(不能更改么?!)
如果要改,只能使用注解@JSONField来更改
<mvc:annotation-driven > <mvc:message-converters> <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> <value>application/json</value> </list> </property> <property name="features"> <list> <value>WriteDateUseDateFormat</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>
自定义FastJson消息转换器(坑爹,视频不讲了,让自己的去解决)
相关文章推荐
- 对象转换成Json字符串是时中文乱码
- json2 (json对象转换, 解决中文乱码问题)
- Java 学习笔记12:Java Json对象转换
- json工具处理对象属性时,该属性需要特殊处理时,例如时间本来是yyyy/MM/dd你想转换为yyyy-MM-dd
- 含有中文字符的json对象通过jquery提交到mongoose web的乱码问题
- android 开发笔记 使用Volley框架获取json数据出现中文乱码解决方案
- fastjson在将Map<Integer, String>转换成JSON字符串时,出现中文乱码问题
- 学习笔记--SpringMVC 3.1下返回json时中文显示乱码问题的解决方案
- Python学习笔记(一)json和对象之前的相互转换
- Json转换中文到前台出现乱码问题
- 创建自定义拦截器(示例)----默然说话20140411备课笔记
- php json与数组转换及中文乱码问题
- php数组转换为json中文乱码解决方案
- python字典中文乱码,将其转换为json格式输出
- php+json+ajax解决中文乱码笔记
- 关于json_encode()函数转换后,中文乱码或出现空白情况
- MySql 字符串时间转换 和 中文乱码
- 学习笔记:DataTables之数据读取和操作(java对象转换为json对象)
- Spring AMQP 发送JSON格式的对象及Java 8时间转换成JSON格式
- [置顶] flume高并发优化——(11)排除json转换及中文乱码