服务器返回的对象转换成json格式 中文乱码:
1,注解RequestMapping中produces属性可以设置返回数据的类型以及编码,可以是json或者xml
@RequestMapping(value = "xxx",produces = "application/json;charset=utf-8")
或
@RequestMapping(value = "xxx",produces = "application/xml;charset=utf-8")
2,xml中配置
<mvc:annotation-driven>
<!--JSON格式乱码处理方式-->
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="UTF-8"/>
</bean>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper">
<bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
<property name="failOnEmptyBeans" value="false"/>
</bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
Jackson:
UserController.java
@Controller
public class UserController {
@RequestMapping("json1")
//@RequestMapping(value = "json1",produces = "application/json;charset=utf-8")
@ResponseBody //将服务器返回的对象转换成jsong格式响应回去
public String json1() throws JsonProcessingException {
//需要一个Jackson的对象映射器 使用它可以直接将对象转换为json字符串
ObjectMapper mapper = new ObjectMapper();
User user = new User("zs",23,"男");
System.out.println(user);
//将Java对象转换为json字符串
String s = mapper.writeValueAsString(user);
System.out.println(s);
return s;
}
@RequestMapping(value = "json2",produces = "application/json;charset=utf-8")
//produces 指定响应体返回类型和编码
@ResponseBody //将服务器返回的对象转换成jsong格式响应回去
public String json2() throws JsonProcessingException {
User user = new User("zs",23,"男");
System.out.println(user);
return new ObjectMapper().writeValueAsString(user);
}
@RequestMapping("json3")
@ResponseBody //将服务器返回的对象转换成jsong格式响应回去
public String json3() throws JsonProcessingException {
List<User> list = new ArrayList<>();
User user1 = new User("zs",23,"男");
User user2 = new User("ls",24,"女");
User user3 = new User("ww",25,"女");
User user4 = new User("zl",26,"男");
list.add(user1);
list.add(user2);
list.add(user3);
list.add(user4);
return new ObjectMapper().writeValueAsString(list);
}
@RequestMapping("time1")
@ResponseBody //将服务器返回的对象转换成jsong格式响应回去
public String time1() throws JsonProcessingException {
Date time = new Date();
System.out.println(time);
//时间默认返回的json字符串变成了时间戳的格式
return new ObjectMapper().writeValueAsString(time);
}
@RequestMapping("time2")
@ResponseBody //将服务器返回的对象转换成jsong格式响应回去
public String time2() throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
//关闭时间戳功能 mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);
//自定义时间格式
SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
//指定mapper时间格式为SimpleDateFormat
mapper.setDateFormat(sdf);
Date time = new Date();
System.out.println(time);
//时间默认返回的json字符串变成了时间戳的格式
return mapper.writeValueAsString(time);
}
//编写一个工具类JsonUtils
@RequestMapping("time3")
@ResponseBody //将服务器返回的对象转换成jsong格式响应回去
public String time3() throws JsonProcessingException {
return JsonUtils.getJson(new Date());
}
}
JsonUtils .java
public class JsonUtils {
public static String getJson(Object object){
return getJson(object,"yyyy-MM-dd HH:mm:ss");
}
public static String getJson(Object object,String dateFormat){
ObjectMapper mapper = new ObjectMapper();
//关闭时间戳功能
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);
//自定义时间格式
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
//指定mapper时间格式为SimpleDateFormat
mapper.setDateFormat(sdf);
//时间默认返回的json字符串变成了时间戳的格式
try {
return mapper.writeValueAsString(object);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
}
idea tomcat控制台中文乱码:
1.在vm中设置编码方式 -Dfile.encoding=UTF-8
2.File->Setting ,设置File Encodings ,检查Default Encodings 是否是UTF-8.
3.打开Idea的安装文件,用记事本打开这两个配置文件,在每一个文件后,添加
-Dfile.encoding=UTF-8