JSON数据-jackson的使用
1.使用jackson需要先导包
com.fasterxml.jackson.core
jackson-databind
2.13.0
2.web.xml
<?xml version="1.0" encoding="UTF-8"?>
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc-servlet.xml
springmvc
/
encoding
org.springframework.web.filter.CharacterEncodingFilter
encoding
/*
3.springmvc-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
4.UserController:
package com.kakafa.controller;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.kakafa.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller //增加了这个注解会走视图解析器
public class UserController {
//produces = "application/json;charset=utf-8"解决json中文乱码问题
@RequestMapping(value="/j1",produces = "application/json;charset=utf-8")
@ResponseBody //增加了这个注解,则这个方法就不会走视图解析器,会直接返回一个字符串
public String jason1() throws JsonProcessingException {
//jackson ObjectMapper
ObjectMapper mapper = new ObjectMapper();
User user=new User(1,"卡卡","123456");
String s = mapper.writeValueAsString(user);
return s;
}
}
5.利用springmvc统一解决乱码
在springmvc-servlet.xml中添加如下代码:
<?xml version="1.0" encoding="UTF-8"?>
6.@RestController
用@RestController来代替@Controller和@ResponseBody
@RestController //增加了这个注解这个类里面的所有方法都不会走视图解析器,而是返回一个字符串
public class UserController {
@RequestMapping("/j1")
public String jason1() throws JsonProcessingException {
//jackson ObjectMapper
ObjectMapper mapper = new ObjectMapper();
User user=new User(1,"卡卡","123456");
String s = mapper.writeValueAsString(user);
return s;
}
}
7.创建一个JSON工具类
当多个controller里面多个方法需要用到JSON时,可以提取出公共代码,创建一个JSON工具类
- JsonUtil:
package com.kakafa.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 JsonUtil {
public static String getJson(Object o){
ObjectMapper mapper = new ObjectMapper();
try {
return mapper.writeValueAsString(o);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
public static String getJson(Object o, String dataFormat) {
ObjectMapper mapper = new ObjectMapper();
//不使用时间戳的方式,JSON输出日期类型的字符串,默认是时间戳的形式,因此这里设置为false
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
//自定义时间的格式
SimpleDateFormat sdf = new SimpleDateFormat(dataFormat);
mapper.setDateFormat(sdf);
try {
return mapper.writeValueAsString(o);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
}
- UserController
import com.fasterxml.jackson.core.JsonProcessingException;
import com.kakafa.pojo.User;
import com.kakafa.utils.JsonUtil;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
@RestController //增加了这个注解这个类里面的所有方法都不会走视图解析器,而是返回一个字符串
public class UserController {
@RequestMapping("/j1")
public String jason1() throws JsonProcessingException {
User user=new User(1,"卡卡","123456");
return JsonUtil.getJson(user);
}
@RequestMapping("/j2")
public String jason2() throws JsonProcessingException {
Date date=new Date();
return JsonUtil.getJson(date,"yyyy-MM-dd HH:mm:ss");
}
}