springMVC使用JSON时首先要导入架包
Jackson Databid
对于JSON乱码问题,可以在springmvc-servlet.xml中加入配置
@RequestMapping(value = "/j1",produces = "application/json;charset=utf-8")
或者
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<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>
案例:
方法一:
@RequestMapping("/j2")
// @ResponseBody
public String json2() throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
List<User> userList = new ArrayList<User>();
User user1 = new User(1, "name", 13);
User user2 = new User(2, "name", 13);
User user3 = new User(3, "name", 13);
userList.add(user1);
userList.add(user2);
userList.add(user3);
String str = objectMapper.writeValueAsString(userList);
return str;
}
@RequestMapping("/j3")
// @ResponseBody
public String json3() throws JsonProcessingException {
ObjectMapper objectMapper=new ObjectMapper();
//自定义日期格式
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
objectMapper.setDateFormat(sdf);
Date date = new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str=objectMapper.writeValueAsString(date);
return str;
}```
```bash
方式二:为了方便,首先创建一个JSON工具类
package com.li.Utils;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import java.text.SimpleDateFormat;
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 Format){
ObjectMapper objectMapper=new ObjectMapper();
//自定义日期格式
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);
SimpleDateFormat sdf=new SimpleDateFormat(Format);
objectMapper.setDateFormat(sdf);
try {
return objectMapper.writeValueAsString(object);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
}
调用;
@RequestMapping("/j4")
// @ResponseBody
public String json4() throws JsonProcessingException {
List<User> userList = new ArrayList<User>();
User user1 = new User(1, "name", 13);
User user2 = new User(2, "name", 13);
User user3 = new User(3, "name", 13);
userList.add(user1);
userList.add(user2);
userList.add(user3);
return JsonUtils.getJson(userList);
}
@RequestMapping("/j5")
// @ResponseBody
public String json3() throws JsonProcessingException {
Date date = new Date();
return JsonUtils.getJson(date, "yyyy-MM-dd HH:mm:ss");
}
除了自己写的json,还用一种fastjson可以使用
首先添加依赖,
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.33</version>
</dependency>
直接使用
//使用fastJson
@RequestMapping("/j5")
// @ResponseBody
public String json5() throws JsonProcessingException {
List<User> userList = new ArrayList<User>();
User user1 = new User(1, "name", 13);
User user2 = new User(2, "name", 13);
User user3 = new User(3, "name", 13);
userList.add(user1);
userList.add(user2);
userList.add(user3);
return JSON.toJSONString(userList);
}