springmvc中JSON的使用(jackson版)

一、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 查看本文章

猜你喜欢

转载自blog.csdn.net/weixin_42072357/article/details/105207356
今日推荐