org.springframework.http.converter.json.MappingJackson2HttpMessageConverter

我们知道Springmvc默认返回的是一个视图,而在前后端分离的开发模式中,我们经常使用Json格式的数据进行前后端数据的交换。通常情况下有两种方式去构建一个Json格式的响应数据,第一种是直接手动拼接Json格式的字符串,然后以String返回,第二种是使用对象转换器来完成对象与Json数据的转换。
第一种方式太low了,我们来说第二种方式,通过@ResponseBody注解和MappingJackson2HttpMessageConverter来完成 对象到Json串的转换。

依赖:


	com.fasterxml.jackson.core
	jackson-annotations
	2.5.4


	com.fasterxml.jackson.core
	jackson-core
	2.5.4


	com.fasterxml.jackson.core
	jackson-databind
	2.5.4

spring的配置文件中配置MappingJackson2HttpMessageConverter转换器


		
			
				
					
						
							
								
							
						
					
				
			
		
	

先来看三个接口描述:
org.springframework.http.converter.json.MappingJackson2HttpMessageConverter_第1张图片

  • 不使用@ResponseBodySpringmvc默认是返回一个视图,因此第一个会报错

    org.springframework.http.converter.json.MappingJackson2HttpMessageConverter_第2张图片

  • 返回自定义的Json串

    这里写图片描述

  • 使用Json转换器

    这里写图片描述

总结:

  1. 返回前端一个对象时,MappingJackson2HttpMessageConverter会自动将对象转换成Json格式数据,并且我们可以指定转换器的一些属性,例如上面指定了日期格式。

  2. 我们在使用com.fasterxml.jackson.databind.ObjectMapper进行对象和json的转换时,对于jsonList的操作,应该用下面的这种方法:

    import com.fasterxml.jackson.core.type.TypeReference;
    import com.fasterxml.jackson.databind.DeserializationFeature;
    import com.fasterxml.jackson.databind.ObjectMapper;
    List userList = new ArrayList<>();
    userList.add(new User("zhangsan",18));
    userList.add(new User("lisi",19));
    ObjectMapper mapper = new ObjectMapper();
    mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    try {
    	// 集合转json
        String userJson = mapper.writeValueAsString(userList);
        // json转集合
        List users = mapper.readValue(userJson,new TypeReference>() { });
        System.out.println(users);
    } catch (IOException e) {
        e.printStackTrace();
    }
    

你可能感兴趣的:(springmvc)