zoukankan      html  css  js  c++  java
  • 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形式
  • 相关阅读:
    【机器学习】机器学习12个关键经验教训
    【机器学习】24个终极项目提升您的机器学习知识和技能
    2018-12-21-WPF-弹出-popup-里面的-TextBox-无法输入汉字
    2019-10-31-C#-dotnet-获取整个局域网的-ip-地址
    2018-11-26-win10-uwp-获取窗口的坐标和宽度高度
    2019-5-21-dotnet-core-使用-CoreRT-将程序编译为-Native-程序
    2019-5-21-Roslyn-使用-Directory.Build.props-管理多个项目配置
    2019-2-26-SublimeText-快速打开当前文件的文件夹
    2019-2-18-VisualStudio-给项目添加特殊的-Nuget-的链接
    2019-8-31-dotnet-如何在-Mock-模拟-Func-判断调用次数
  • 原文地址:https://www.cnblogs.com/dreamzone/p/12485665.html
Copyright © 2011-2022 走看看