32.JSON

1.json语法规则

image.png

2.

js原生就支持json,可以对json对象直接操作

//sample.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
    var json = [
        {
            "empno": 7369,
            "ename": "雪之下",
            "job": "软件工程师",
            "hiredate": "2017-05-12",
            "salary": 13000,
            "dname": "研发部"
        },
        {
            "empno": 9527,
            "ename": "比企谷",
            "job": "客户经理",
            "hiredate": "2017-04-12",
            "salary": 15000,
            "dname": "人力资源部",
            "customers": [
                {
                    "cname": "李东"
                },
                {
                    "cname": "李华"
                }
            ]
        }
    ];
    console.log(json);
    for(var i=0;i<json.length;i++){
        var emp = json[i];
        //document.write("<h1>");写到document页面上即html上
        document.write("<h1>");
        document.write(emp.empno);
        document.write(","+emp.ename);
        document.write(","+emp.job);
        document.write(","+emp.hiredate);
        document.write(","+emp.salary);
        document.write(","+emp.dname);
        if(emp.customers != null){
            for(var j=0;j<emp.customers.length;j++){
                document.write(emp.customers[j].cname);
            }
        }
    
        document.write("</h1>");
         
    }
</script>
</head>
<body>
    
</body>
</html>

输出结果:


image.png

3 JSON 与字符串互相转换

image.png
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
//====================str-->json====================================
    //var json = {};//这是json
    //var str = "{}";//这是字符串
    var str =   "{\"class_name\" : \"五年级一班\"}";
    var json = JSON.parse(str);//JSON对象是由浏览器提供的,低版本IE浏览器如I8一下不支持
    console.log(str);
    console.log(json);
    document.write("班级:" + json.class_name);
//====================json-->str====================================
    var json1 = {"class_name":"五年Ⅳ班"};
    var str1 = JSON.stringify(json1);
    console.info(json1);
    console.info(str1);
    //下面可以用像对象那样创建json
    var json2 = {};
    json2.class_name = "三年A班";
    json2.floor = "逸夫楼三层";
    json.teacher = "王义夫";
    console.info(json2);
</script>
</head>
<body>
     
</body>
</html>

输出结果:


image.png

4 JSON与Java交互

4.1 员工基本信息类

//Employee.java
package com.imooc.json;

import java.util.Date;

import com.alibaba.fastjson.annotation.JSONField;

public class Employee {
    @JSONField(name = "empnum") //序列化时,将此key改为 empnum
    private Integer empno;
    private String ename;
    private String job;
    //@JSONField(format="yyyy-MM-dd HH:mm:ss SSS") //使用fastjson提供的格式转换,解决输出为时间戳问题
    @JSONField(format="yyyy-MM-dd")
    private Date hdate;
    private Float salary;
    @JSONField(serialize = false) //转换为json字符串时对此项不进行序列化,即再json中删除
    private String dname;
    public Integer getEmpno() {
        return empno;
    }
    public void setEmpno(Integer empno) {
        this.empno = empno;
    }
    public String getEname() {
        return ename;
    }
    public void setEname(String ename) {
        this.ename = ename;
    }
    public String getJob() {
        return job;
    }
    public void setJob(String job) {
        this.job = job;
    }
    public Date getHdate() {
        return hdate;
    }
    public void setHdate(Date hdate) {
        this.hdate = hdate;
    }
    public Float getSalary() {
        return salary;
    }
    public void setSalary(Float salary) {
        this.salary = salary;
    }
    public String getDname() {
        return dname;
    }
    public void setDname(String dname) {
        this.dname = dname;
    }
    
    
}

4.2 java 对象 <-->json

//FastJsonSample1.java
package com.imooc.json;

import java.util.Calendar;

import com.alibaba.fastjson.JSON;


public class FastJsonSample1 {

    public static void main(String[] args) {
        Employee employee = new Employee();
        employee.setEmpno(9527);
        employee.setEname("王晓东");
        employee.setJob("客户经理");
        employee.setSalary(10000f);
        employee.setDname("市场部");
        Calendar c = Calendar.getInstance();
        c.set(2019,0,30,0,0,0);
        employee.setHdate(c.getTime());
        //FastJSON中提供了JSON对象,完成与JSON字符串的相互转换
        String json = JSON.toJSONString(employee);
        System.out.println(json);
        //发序列化
        Employee emp = JSON.parseObject(json,Employee.class);
        System.out.println(emp.getEname());
    }

}

4.3 java ArrayList <----> json

//FastJsonSample2.java
package com.imooc.json;

import java.util.ArrayList;
import java.util.List;

import com.alibaba.fastjson.JSON;

public class FastJsonSample2 {
    public static void main(String[] args) {
        List emplist = new ArrayList();
        for(int i=1;i<=100;i++) {
            Employee employee = new Employee();
            employee.setEmpno(4488+i);
            employee.setEname("员工"+i);
            emplist.add(employee);
        }
        //array--->json
        String json = JSON.toJSONString(emplist);
        System.out.println(json);
        //json--->array
        List<Employee> emps = JSON.parseArray(json,Employee.class);
        for(Employee e:emps) {
            System.out.println(e.getEmpno()+":"+e.getEname());
        }
    }
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容