美文网首页
一、JSON

一、JSON

作者: superNeil | 来源:发表于2020-06-12 20:05 被阅读0次

    1、定义

    JSON(JavaScript Object Notation, JS 对象简谱)是一种轻量级的数据交换格式

    2、格式

    JSON 就是一种有格式的字符串。

    JSON 与 JS 对象的关系

    很多人搞不清楚 JSON 和 JS 对象的关系,甚至连谁是谁都不清楚。其实,可以这么理解:

    JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>JSON</title>
        <script src="/static/jQuery-1.11/jquery-1.11.3.js"></script>
        <script>
            
            // 写 JSON,这个格式的字符串里面存一个员工数据 id 1 name zs age 18
            
            var jsonStr1='{"id":1,"name":"张三","age":18}'
            console.log(jsonStr1)
            //alert(jsonStr1);
            
            // 写 JSON,这个格式的字符串里面存两个个员工数据 id 1 name zs age 18 id 2 name ls age 19
            var jsonStr2='[{"id":1,"name":"张三","age":18},{"id":2,"name":"李四","age":20}]'
            console.log(jsonStr2);
            
            // 写 JSON,这个格式的字符串里面存一个员工数据 id 1 name zs age 18 部门 id 5 name 开发部
            var jsonStr3='[{"id":1,"name":"张三","age":18,"dept":{"id":5,"name":开发部}]'
            console.log(jsonStr3);
            
            //***********************************************************************************
            
            //js 对象
            console.log("下面打印的是js对象");
            console.log("注意 对象 才能获取属性 , JSON 只是 字符串 , 不能直接获取属性 , 除非你去切割哈, 或者转为 对象再获取");
    
            var jsObj1 = {"id":1,"name":"张三","age":18}
            console.log(jsObj1);
            console.log("获取name属性 : "+jsObj1.name);
    
            var jsObj2 = {id:1, name:"zs", age:18};
            console.log(jsObj2);
            console.log("获取name属性 : "+jsObj2.name);
            //***********************************************************************************
            
            //***********************************************************************************
            //下面 我们来演示下 JSON 与 js 对象的 转换
            //用到 两个方法 :  JSON.stringify()  JSON.parse()
            
            console.log("js对象转为JSON :"+JSON.stringify(jsObj1));
            console.log(JSON.parse(jsonStr1));
            
            // 字符串 + 对象 是打印不出来的哦
            //例如 : console.log("JSON转为js对象 :"+ JSON.parse(jsonStr1)); 错误示范
    
            //***********************************************************************************
        </script>
    </head>
    
    <body>
    <button type="submit" id="btn1">提交</button>
    
    </body>
    </html>
    

    在JAVA 中的 JSON

    两种方式 :

    Jackson | Fastjson 记得添加依赖

    <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.6</version> </dependency>
    
    <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency>
    

    Jackson ( 常用 )

    (api : objectMapper.writeValueAsString(department) | objectMapper.readValue("{"id":1,"name":"小明","sn":"xm"}", Department.class))
    public class JsonTest {
        @Test
        public void testJackson() throws IOException {
            String jsonStr = "{\"id\":1,\"name\":\"张三\",\"age\":18}";
    
            //JSON 与 Java 对象转换
    //        开发中一般都会使用第三方的一些 JSON 操作的依赖或者 JAR 包来来完成 Java 对象与 JSON 字符串之间
    //        的转换。
    //        在 Java 中,转换 JSON 的依赖或者 JAR 有很多,这里单讲两种常用:
    //        Jackson:在 Spring MVC 中内置支持她,速度也挺快,稳定性比较好。
    //        Fastjson:阿里出品,号称是 Java 领域中转换 JSON 最快的一个插件,中文文档比较齐全。
            //创建一个 java 对象
            Department department = new Department(1L,"开发部","dev");
            ObjectMapper objectMapper = new ObjectMapper();
            //java对象 转 JSON
            System.out.println(objectMapper.writeValueAsString(department));
            //JSON 转 java对象  注意 要转成 什么类型的 java 对象  所以后面 需要 加多个参数
            System.out.println(objectMapper.readValue("{\"id\":1,\"name\":\"小明\",\"sn\":\"xm\"}", Department.class));
        }
    

    Fastjson

    (api : JSON.toJSONString(department) | JSON.parseObject("{"id":1,"name":"开发部","sn":"dev"}", Department.class)
    @Test
        public void testFastjson() throws IOException {
            //创建一个 java 对象
            Department department = new Department(1L,"开发部","dev");
    
            //java对象 转 JSON
            System.out.println(JSON.toJSONString(department));
            //JSON 转 java对象  注意 要转成 什么类型的 java 对象  所以后面需要 加多个参数
            System.out.println(JSON.parseObject("{\"id\":1,\"name\":\"开发部\",\"sn\":\"dev\"}", Department.class));
        }
    

    2、Spring MVC 响应 JSON 步骤

    在 pom.xml 中添加 Jackson 依赖。

    在 mvc.xml 配置 MVC 注解解析器。

    定义一个类,里面提供对应属性封装数据。

    在要响应 JSON 数据的控制器的处理方法上贴 @ResponseBody 注解,且方法返回类型为上面定义的类。

    在处理方法中创建上面定义类 的对象,封装数据返回即可。

    实例说话

    @Controller
    public class JsonController {
    
        @RequestMapping("/getTime")
        @ResponseBody //加了 这个 就不是跳转的意思 哦  注意
        public JsonResult getTime(){
            Date date = new Date();
            JsonResult jsonResult = new JsonResult(true,date.toLocaleString());
            return jsonResult;
    
            //有了 注解 , 很简单 . 直接创建对象 使用注解 @ResponseBody  就会自动转成 JSON  .
        }
    
        @Autowired
        private IDepartmentService departmentService;
    
        @RequestMapping("/getDepartments")
        @ResponseBody //加了 这个 就不是跳转的意思 哦  注意
        public List<Department> list(){
            List<Department> departments = departmentService.selectAll();
            return  departments;
            //有了 注解 , 很简单 . 直接创建对象 数组也可以 使用注解 @ResponseBody  就会自动转成 JSON  .
        }
    
    }
    

    相关文章

      网友评论

          本文标题:一、JSON

          本文链接:https://www.haomeiwen.com/subject/uzbntktx.html