一、maven工程中在pom.xml中配置依赖,或者在普通项目中导入jar包
由于博主在操作的时候用的是maven,故此处出示pom.xml中的依赖,对于依赖可到
https://mvnrepository.com/去查找,那里也可以下载jar包
dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.3</version>
</dependency>
二、简单的使用jackson,将一些对象或者list对象数组转为Json格式,代码如下
public String json1() throws JsonProcessingException {
User user1 = new User("张三1",22,"男");
User user2 = new User("张三2",22,"男");
User user3 = new User("张三3",22,"男");、
List<User> userList = new ArrayList<>();
userList.add(user1);
userList.add(user2);
userList.add(user3);
//jackson objectMapper 创建对象
ObjectMapper mapper = new ObjectMapper();
//以下可以将对象或者对象数组转化为json格式,返回到前端
String str1 = mapper.writeValueAsString(user);
String str = mapper.writeValueAsString(userList);
return str;
图示:
三、对于乱码问题的解决
如果仅仅做以上的操作,中文会产生乱码,下面给出了两种解决的方法。均可以解决乱码的问题,第二种方法是死代码,个人觉得比较好用
1、修改@RequestMapping内容
@RequestMapping(value = "/j1",produces = "application/json;charset=utf-8")
2、修改springmvc的配置文件
在配置文件中添加以下代码
<!-- JSON乱码配置问题-->
<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="failOnUnknownProperties" value="false"/>
</bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
四、 输出时间
4.1jackson返回时间,简单代码如下,返回一个时间戳
@RequestMapping(value = "/j4")
public String json4() throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
//不是用时间戳的形式
Date date = new Date();
//自定义日期的格式
//ObjectMapper,时间解析后的默认格式是时间戳:Timestamp
return mapper.writeValueAsString(date);
}
此时的返回情况是一个毫秒数,而且一直刷新一直改变,是因为bjectMapper,时间解析后的默认格式是时间戳:Timestamp
4.2jackson不返回时间戳,返回一个固定格式的时间
@RequestMapping(value = "/j4")
public String json4() throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
//不是用时间戳的形式
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);
Date date = new Date();
//自定义日期的格式
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
mapper.setDateFormat(simpleDateFormat);
//ObjectMapper,时间解析后的默认格式是时间戳:Timestamp
return mapper.writeValueAsString(date);
}
博主运行时返回的是"2020-03-30 21:24:04"
4.3、对jackson的调用进行封装到工具类,方便多次使用时进行调用
public class JsonUtils {
//用于将对象转化为json字符串时使用
public static String getJson(Object object){
return getJson(object,"yyyy-MM-dd HH:mm:ss");
}
//返回时间的时候使用
public static String getJson(Object object,String dataFormat){
ObjectMapper mapper = new ObjectMapper();
//不使用时间戳的方式
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);
//自定义日期的格式
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dataFormat);
mapper.setDateFormat(simpleDateFormat);
try {
return mapper.writeValueAsString(object);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
}
五、了解GSON、
gson也可以将对象或者list对象转化为json格式的字符串,下面简单说一下对其的使用
将下面的 userList转化为json
5.1、添加包或者导入依赖
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
5.2、使用
User user1 = new User("张三1",22,"男");
User user2 = new User("张三2",22,"男");
User user3 = new User("张三3",22,"男");
List<User> userList = new ArrayList<>();
userList.add(user1);
userList.add(user2);
userList.add(user3);
则String s = new Gson().toJson(userList)
5.3、乱码
对于gson也可能会产生乱码,博主简单的试了以下,上述jackson解决乱码的方法也适用
六、fastjson,阿里巴巴的一个开源工具
此处先不做展开,
扫描二维码关注公众号,回复:
11380735 查看本文章