05SpringMVC:Json交互处理

Json的含义:

Json对象是一种轻量级的数据交换格式,采用完全独立于 编程语言的文本格式来存储和表示数据,它有着简洁清晰的层次结构,使它成为理想的数据交换语言。易于人和阅读理解,易于机器解析和生成。
Json键值对表达形式:
{“name”: “王昌军”}
{“age”: “3”}
{“sex”: “男”}

Json与对象之间的相互转换

新建项目,添加web的支持

1.添加Jackson依赖
Jackson是目前比较好的Json解析工具

 <dependency>
        <groupId>com.fasterxml.jackson.coregroupId>
        <artifactId>jackson-databindartifactId>
        <version>2.11.0version>
    dependency>

2.编写pojo类
注意导入lombok依赖

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Person {
        private String name;
        private int age;
        private String sex;
}

3.配置web.xml文件


<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    
    <servlet>
        <servlet-name>SpringMVCservlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
        
        <init-param>
            <param-name>contextConfigLocationparam-name>
            <param-value>classpath:springmvc-servlet.xmlparam-value>
        init-param>
        
        <load-on-startup>1load-on-startup>
    servlet>

    
    <servlet-mapping>
        <servlet-name>SpringMVCservlet-name>
        <url-pattern>/url-pattern>
    servlet-mapping>

    <filter>
        <filter-name>encodingfilter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
        <init-param>
            <param-name>encodingparam-name>
            <param-value>utf-8param-value>
        init-param>
    filter>
    <filter-mapping>
        <filter-name>encodingfilter-name>
        <url-pattern>/url-pattern>
    filter-mapping>

web-app>

4.配置Springmvc-servlet.xml

为了统一解决的乱码问题,可以通过Spring配置统一指定,添加一段


<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       https://www.springframework.org/schema/mvc/spring-mvc.xsd">


<context:component-scan base-package="controller"/>

    <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="failOnEmptyBeans" value="false"/>
     bean>
         property>
           bean>
         mvc:message-converters>
        mvc:annotation-driven>

    
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          id="internalResourceViewResolver">
        
        <property name="prefix" value="/WEB-INF/jsp/" />
        
        <property name="suffix" value=".jsp" />
    bean>

beans>

5.编写Controller类
@ResponseBody注解,这里会将str转称json格式返回
也可以用在@RestController来替代@Controller,这样就不用在每个方法上加@ResponseBody了

@Controller
public class UserController {
        @RequestMapping("/json1")
        @ResponseBody
        public String json1() throws JsonProcessingException {
            //创建一个jackson的对象映射器,用来解析数据
            ObjectMapper mapper = new ObjectMapper();
            //创建一个对象
            Person user = new Person("王昌军", 20, "男");
            //将我们的对象解析成为json格式
            String str = mapper.writeValueAsString(user);
            //由于@ResponseBody注解,这里会将str转成json格式返回;十分方便
            return str;
    }
}

配置 Tomcat进行测试
通过测试可发现,可以把一个实体类对象转换成Json对象展示到前端页面。
在这里插入图片描述利用Json输出时间对象
可以自定义封装成一个自己的类中,这样可以随时方便的获取方法

public class JsonUtils {
        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 sdf=new SimpleDateFormat(dataFormat);
            //指定时间格式
            mapper.setDateFormat(sdf);
            try {
                return mapper.writeValueAsString(object);
            } catch (JsonProcessingException e) {
                e.printStackTrace();
            }
            return null;
        }
    }

其测试结果如下:
在这里插入图片描述小结:Json在我们的数据传输中十分重要,所以我么一定要学会使用

你可能感兴趣的:(SpringMVC,json,springmvc)