• 1. JSON 的 写法 和 简介


    JSON 很常用啊 也很有用,反正比XML好又快

    json简介

    json的全称是JavaScript Object Notation,是一种数据交换格式,独立于编程语言,可以用来存储数据,优点是非常利于人类阅读和编写,同时也利于机器的解析和生成,同时还可以提升网络传输效率。
    json的数据格式是以名-值对的方式存储的,可以将其看做是一个字符串,下面就是一个json格式的数据,对象会放到{}中,数组放到[]中

    两种写法:(JAVASCRIPT 中 写法)

    <script>
        let persn = {
            name:'bihu',
            age:18,
            sex:1,
            birthday:'2000-01-01'
        };
    
        console.log(persn.name);    //直接输出属性 也可以这样输出:
        console.log(persn['age']);  //很少用 麻烦死了...
    
        /*
        上面对象 下面数组
         */
    
        let animal = [
            {
                name:'monkey',
                count:10
            },
    
            {
                name:'dog',
                count: 20
            }
        ]
    
        console.log(animal[0].name);    //数组的话 要先获取到对象元素 然后获取到对象元素的属性即可.
    
    </script>

    在json中规定的字符编码时utf-8,几乎所有的编程语言都有解析json数据的第三方库,

    因此json的应用非常多。在servlet中可以将要返回给前台的数据封装为json格式

    在前台中可以使用javascript来解析,javascript已经内置了json的解析

    json格式的数据是跟语言无关的,在java中也有非常多的第三方库可以解析json格式的数据,常用的有:

    • fastjson:国人开发的,是目前java语言中最快的json库
    • gson:google开发
    • jackson:Tatu Saloranta开发

    下面以fastjson为例看下,自己去百度下载啊

    fastjson中常用的方法:

    • JSON.toJSONString

      将JavaBean转成json格式的字符串

    • JSON.parseObject

      将json格式的字符串转换为JavaBean

    代码演示:

     我们创建一个学生类: GET 和 SET 都要有 再来个构造啊【规范点请加空构造 养成好习惯 这里忘记了 随便啦】 

    package temp;
    
    import java.util.Date;
    
    public class student {
        private String name;
        private int age;
        private char sex;
        private Date birthday;
        public student1(String name, int age, char sex, Date birthday) {
            super();
            this.name = name;
            this.age = age;
            this.sex = sex;
            this.birthday = birthday;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public char getSex() {
            return sex;
        }
        public void setSex(char sex) {
            this.sex = sex;
        }
        public Date getBirthday() {
            return birthday;
        }
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
        
        
        
    }

    再来个学校类:

    package temp;
    
    import java.util.List;
    
    public class school {
        private List<student> zspt;
    
        public school(List<student> zspt) {
            super();
            this.zspt = zspt;
        }
    
        public school() {
            
        }
    
        public List<student> getZspt() {
            return zspt;
        }
    
        public void setZspt(List<student> zspt) {
            this.zspt = zspt;
        }
        
        
    }

    其次我们尝试用插件去生成JSON 和 解析JSON:

    <%@page import="java.text.DateFormat"%>
    <%@page import="com.alibaba.fastjson.JSON"%>
    <%@page import="temp.school"%>
    <%@page import="temp.student"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <% 
                    student bihu = new student("bihu",18,'男',DateFormat.getDateInstance().parse("2020-01-01"));
                    student zhangsan = new student("zhangsan",21,'女',DateFormat.getDateInstance().parse("1999-12-03"));
                    school zspt = new school();
                    zspt.getZspt().add(bihu);
                    zspt.getZspt().add(zhangsan);
                    //开始生成 JSON :
                    String strJSON = JSON.toJSONString(zspt);
                    
                    //JSON 转对象:
                    school objJSON = (school)JSON.parseObject(strJSON, school.class);
                    
                    //然后分别装入 reques域中 在网页打印:
                    request.setAttribute("json_str",strJSON );
                    request.setAttribute("json_obj", objJSON);
                    
                    //还可以打印: 都没问题的!
                    System.out.print(objJSON.getZspt().get(0).getName());
                    System.out.print(objJSON.getZspt().get(0).getBirthday());                
                %>
                
                json_str : ${ json_str }
                <br>
                json_obj : ${ json_obj }
                
                
    </body>
    </html>

    单层JSON 和 多层JSON 对比: 

    {"age":18,"birthday":1577808000000,"name":"bihu","sex":"男"} 
    
     ----------------------------------------------------------------
     
    {"zspt":
    
    [
    
    {"age":18,"birthday":1577808000000,"name":"bihu","sex":"男"},
    
    
    {"age":21,"birthday":944150400000,"name":"zhangsan","sex":"女"}
    
    ]
    
    }

    其实不喜欢这种方式解析 JAVA有自带的 

    本文来自博客园,作者:咸瑜,转载请注明原文链接:https://www.cnblogs.com/bi-hu/p/14841780.html

  • 相关阅读:
    前端 fetch 通信
    编写高质量的JavaScript代码(一)
    Redis学习笔记1-Redis的介绍和认识
    gitignore不起作用解决的方法
    【我的面经】说说简历的细节——软件开发岗位
    菜鸟的mongoDB学习---(七)MongoDB 备份(mongodump)与恢复(mongorerstore)
    HDU 4927 Series 1
    树状数组求第K小值 (spoj227 Ordering the Soldiers &amp;&amp; hdu2852 KiKi&#39;s K-Number)
    git和SVN的差别
    KVM-Introduce
  • 原文地址:https://www.cnblogs.com/bi-hu/p/14841780.html
Copyright © 2020-2023  润新知