导包jackson-databind
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.3</version>
</dependency>
方法一:创建jackson对象,调用方法转化为json
对象
@ResponseBody
@RequestMapping("/user1")
public String user1() throws JsonProcessingException {
//创建一个jackson对象,用来解析数据
ObjectMapper mapper = new ObjectMapper();
User user = new User(11, "rod", 22);
//使用writeValueAsString方法将user转化为json对象
return mapper.writeValueAsString(user);
}
集合list
@ResponseBody
@RequestMapping("/user1")
public String user2() throws JsonProcessingException {
//创建一个jackson对象,用来解析数据
ObjectMapper mapper = new ObjectMapper();
User user = new User(11, "rod", 22);
//使用writeValueAsString方法将user转化为json对象
ArrayList<User> list = new ArrayList<>();
list.add(user);
return mapper.writeValueAsString(list);
}
日期date
@ResponseBody
@RequestMapping("/user1")
public String user1() throws JsonProcessingException {
//创建一个jackson对象,用来解析数据
ObjectMapper mapper = new ObjectMapper();
//创建时间一个对象,java.util.Date ,没有格式化的date的秒来计算的,时间戳
Date date = new Date();
//自定义日期格式对象
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//日期格式化后,将我们的对象解析成为json格式
return mapper.writeValueAsString(format.format(date));
}
方式二:创建一个工具类,用来格式化json
没优化前:有两个参数,不是日期类,调用还要输入日期格式就麻烦
public class JsonUtils {
//静态方法,拿来即用
public static String getJson(Object object,String dateformat){
ObjectMapper mapper = new ObjectMapper();
//不使用时间差的方式 WRITE_DATE_KEYS_AS_TIMESTAMPS:将日期键作为时间戳写入 改为false
mapper.configure(SerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS,false);
SimpleDateFormat format = new SimpleDateFormat(dateformat);
//指定日期格式
mapper.setDateFormat(format);
try {
return mapper.writeValueAsString(object);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
//如果有异常,就返回null
return null;
}
}
优化后的工具类:调用getJson,默认日期格式yyyy-MM-dd HH:mm:ss,其他对象正常调用一个参数的getJson就可以
public class JsonUtils {
/**
* 功能描述: 重载方法,只传入一个object就可以,默认的日期格式就是"yyyy-MM-dd HH:mm:ss"
* @return java.lang.String
*/
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();
//不使用时间差的方式 WRITE_DATE_KEYS_AS_TIMESTAMPS:将日期键作为时间戳写入 改为false
mapper.configure(SerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS, false);
SimpleDateFormat format = new SimpleDateFormat(dateformat);
//指定日期格式
mapper.setDateFormat(format);
try {
//就是不是日期对象也不影响,都是正常调用了writeValueAsString方法
return mapper.writeValueAsString(object);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
//如果有异常,就返回null
return null;
}
}
版权声明:本文为rod0320原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。