第一节 JSON入门

1.1 JSON介绍

  • JavaScript Object Notation(JavaScript 对表示法)
  • JSON是轻量级的文本数据交换格式
  • JSON独立于语言 具有自我描述性 更易理解
    在这里插入图片描述

1.2 语法规则

  • 数据由键(key)/值(value)描述 ,由逗号分隔开
  • 大括号代表一个完整的对象,拥有多个键/值对
  • 中括号保存数组,多个对象之间使用逗号分隔

1.3 利用json存儲員工信息

[
  {
    "empno": 1234,
    "emname": "李宁",
    "job": "软件工程师",
    "hiredate": "2017-05-12",
    "salary": 14000,
    "dname": "研发部"
  },
  {
  	"empno": 1235,
    "emname": "特步",
    "job": "客戶經理",
    "hiredate": "2017-05-14",
    "salary": 14004,
    "dname": "市场部",
    "customers": [
      {"cname":"王源"},
      {"cname": "王俊凱"}
    ]
  }
]

1.4 JavaScript访问JSON对象

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        var json= [
            {
                "empno": 1234,
                "emname": "李宁",
                "job": "软件工程师",
                "hiredate": "2017-05-12",
                "salary": 14000,
                "dname": "研发部"
            },
            {
                "empno": 1235,
                "emname": "特步",
                "job": "客戶經理",
                "hiredate": "2017-05-14",
                "salary": 14004,"dname": "市场部",
                "customers": [
                    {"cname":"王源"},
                    {"cname": "王俊凱"}
                ]
            }
        ];
        //在瀏覽器控制臺中對json内容进行输出
        console.log(json);
        for (var i = 0; i < json.length; i++) {
            var emp=json[i];
            document.write("<h1>");
            document.write(emp.empno);
            document.write(",",emp.emname);
            document.write(",",emp.job);
            document.write(",",emp.hiredate);
            document.write(",",emp.dname);
            document.write("</h1>")

            if (emp.customers !=null){
                document.write("<h2>---")
                for (var j = 0; j < emp.customers.length; j++) {
                    var custormer=emp.customers[j];
                    document.write(custormer.cname+",")
                }
            }

        }
    </script>
</head>
<body>

</body>
</html>

在这里插入图片描述

1.5JS中将字符串转换为JSON

  • JSON.parse() 方法将字符串转换成JSON对象
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>字符串转JSON</title>
    <script type="text/javascript">
        var str="{\"class_name\":\"五年级四班\"}";
        var json=JSON.parse(str);
        console.log(str);
        console.log(json);
        document.write("班级:"+json.class_name);

    </script>
</head>
<body>

</body>
</html>

在这里插入图片描述
在这里插入图片描述

  • JSON.steingify()方法将JSON对象转换成字符串
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JSON转字符串</title>
    <script type="text/javascript">
        var json1={"class_name":"五年级四班"};
        var str1=JSON.stringify(json1);
        console.log(json1);
        console.log(str1);
        var json2={};
        json2.class_name="五年级五班";
        json2.floor="逸夫楼";
        json2.teacher="吴加林";
        console.info(json2);
    </script>
</head>
<body>

</body>
</html>

在这里插入图片描述

1.6 FastJson的介绍与下载

  • Java的JSON工具包还有FastJson、Jackson、Gson、Json-lib…
  • FastJson是阿里巴巴著名的JSON序列化与反序列化工具包
  • FastJson国内拥有大量使用者,拥有API简单,效率高等优点
    在这里插入图片描述

1.7 FastJSON对象序列化与反序列化

package com.imooc;

import com.alibaba.fastjson.annotation.JSONField;

import java.util.Date;

/**
 * 包名:com.imooc
 *
 * @author why
 * 日期2021-05-24  15:09
 */
public class Employee {
    private Integer empno;
    private String ename;
    private String job;
    @JSONField(format = "yyy-MM-dd")
    private Date hdate;
    private String dname;
    private Float salary;

    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 String getDname() {
        return dname;
    }

    public void setDname(String dname) {
        this.dname = dname;
    }

    public Float getSalary() {
        return salary;
    }

    public void setSalary(Float salary) {
        this.salary = salary;
    }


}

package com.imooc;

import com.alibaba.fastjson.JSON;

import java.util.Calendar;

/**
 * 包名:com.imooc
 *
 * @author why
 * 日期2021-05-24  15:24
 */
public class FastJsonSample1 {
    public static void main(String[] args) {
        Employee employee=new Employee ();
        employee.setEmpno (1111);
        employee.setDname ("研发部");
        employee.setEname ("李四");
        employee.setJob ("客户经理");
        employee.setSalary (10000f);
        //设置时间
        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);
        //将json转换成对象
        Employee emp = JSON.parseObject (json, Employee.class);
        System.out.println (emp);


    }

}


在这里插入图片描述

package com.imooc;

import com.alibaba.fastjson.JSON;

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

/**
 * 包名:com.imooc
 *
 * @author why
 * 日期2021-05-24  15:34
 */
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 (222+i);
            employee.setEname ("员工"+i);
            emplist.add (employee);
        }
        String json = JSON.toJSONString (emplist);
        System.out.println (json);
        //把json数组转换成java对象
        List<Employee> emps = JSON.parseArray (json, Employee.class);
        for (Employee e:emps) {
            System.out.println (e.getEmpno ()+":"+e.getEname ());
        }


    }
}

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值