• springmvc:(六) JSON


    一、JSON

    1. JSON是一种轻量型数据交换格式,
    • 对象表示为键值对,数据由逗号分隔
    • 花括号保存对象
    • 方括号保存数组
    1. JSON 键值对是用来保存 JavaScript 对象的一种方式

    二、JSON 和 JavaScript 对象互转

    • JSON字符串转换为JavaScript 对象,使用 JSON.parse() 方法:

      var obj = JSON.parse('{"a": "Hello", "b": "World"}'); 
      //结果是 {a: 'Hello', b: 'World'}
      
    • JavaScript 对象转换为JSON字符串,使用 JSON.stringify() 方法:

      var json = JSON.stringify({a: 'Hello', b: 'World'});
      //结果是 '{"a": "Hello", "b": "World"}'
      

    三、Controller返回JSON数据

    • Jackson是目前比较好的json解析工具
    • 还有阿里巴巴的 fastjson
    1. Jackson使用

      • 导入jar包
      <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
          <version>2.9.8</version>
      </dependency>
      
      • 配置web.xml

      • 配置springmvc.xml

      • 编写实体类

      • 编写Controller

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

        如果出现了乱码

        //produces:指定响应体返回类型和编码
        @RequestMapping(value = "/json1",produces = "application/json;charset=utf-8")
        
      • 如果项目中有很多请求,则需要统一处理乱码,在springmvc配置文件中

        <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>
        

        四、返回字符串统一解决

        在类上直接使用 @RestController ,这样子,里面所有的方法都只会返回 json 字符串了,不用再每一个都添加@ResponseBody !我们在前后端分离开发中,一般都使用 @RestController ,十分便捷!

        @RestController
        public class UserController {
        
            //produces:指定响应体返回类型和编码
            @RequestMapping(value = "/json1")
            public String json1() throws JsonProcessingException {
                //创建一个jackson的对象映射器,用来解析数据
                ObjectMapper mapper = new ObjectMapper();
                //创建一个对象
                User user = new User("lufei", 10, "男");
                //将我们的对象解析成为json格式
                String str = mapper.writeValueAsString(user);
                //由于@ResponseBody注解,这里会将str转成json格式返回;十分方便
                return str;
            }
        
        }
        

      五、输出时间对象

      @RequestMapping("/json3")
      public String json3() throws JsonProcessingException {
      
          ObjectMapper mapper = new ObjectMapper();
      
          //创建时间一个对象,java.util.Date
          Date date = new Date();
          //将我们的对象解析成为json格式
          String str = mapper.writeValueAsString(date);
          return str;
      }
      
      • Jackson 默认是会把时间转成timestamps形式
  • 相关阅读:
    PHP cURL 应用
    CURL的学习和应用
    PHP中使用cURL实现Get和Post请求的方法
    免费的论文查重网站
    免费的论文查重网站
    初识MFC学习——Hello World
    N皇后问题--回溯法
    c/c++工程中外部头文件及库添加方法
    WinDriver&PCIE
    初识-----基于Socket的UDP和TCP编程及测试代码
  • 原文地址:https://www.cnblogs.com/dreamzone/p/12485665.html
Copyright © 2020-2023  润新知