一文彻底搞懂JSON数据

什么是json,为什么需要JSON,JSON的3种形式,JSON常用的方法等

1、JSON是什么?

TIP
JSON指的是全称是:javascript对象表示法

  • JSON是Ajax发送和接收数据的一种格式
  • JSON是一种轻量级的数据交互格式,其为字符串类型(面试题会考到)
  • JSON是一种语法,用来序列化对象、数组、数值、字符串、布尔值和null,但不能是undefined

2、序列化和反序列化

为什么要序列化?

  • 目的是为了对象可以跨平台存储和网络传输,而网络传输的方式就是IO,而IO支持的数据格式就是字节数组
  • 单方面将对象转成字节数组还不够,传输过去后还要约定一种规则将字节数组转化为对象

通俗讲就像将一栋房子从一个地方运到另一个地方,序列化就是将房子拆成一块块放到车上,再另一个地方根据图纸拼装起来就是返序列化

3、为什么需要JSON

TIP
前后端通信的过程种需要交换数据,如果将前端JS的数据(比数组和对象等)直接传给后端,后端是无法解析的

  • 因为后端语言比如java、php、node.js、python等都有各自的语法
  • 前端是JS语法
  • 因此对于前后端而言,对于数据的写法各自是不同的,因此互不相认
  • 这时候就需要一种双方都认识的数据格式进行中转,而JSON这种数据格式因表现优秀,目前90%以上都用JSON进行中转
  • js(前端)--------> JSON--------->java/python等

4、JSON的3种形式

简单值形式、对象形式、数组形式
JSON数据文件的后缀名是:.json
JSON文件中不能写任何注释

4.1、JSON简单值写法

JSON的简单值形式对应着JS中的基础数据类型:数字、字符串、布尔值、null

  • 特别注意:不能是undefined类型,不然会报错
  • JSON中的字符串必须要用双引号,单引号也会报错

以下每条代码演示都是一个单独JSON文件,以便演示文件里面能写的数据类型

123
"我是字符串"
true
null

4.2 、JSON对象形式

JSON的对象对应的是JS中的对象,主要区别如下

  • JSON中对象的属性名必须用双引号,属性值如果是字符串也必须要用双引号
  • JSON对象的属性值并不能是undefined

以下是text.json文件

{
    "username":"柳学生",
    "password":123456,
    "sex":"male",
    "bobby":["轮滑","羽毛球"],
    "family":{
        "father":"Liu",
        "monder":"美女"
    }
}


以下JS变量中保存的是字符串符合JSON格式的有

  • 特别注意:json本身就是一个字符串,有一定格式要求的字符串
let strJson1 = '{"name":1,"age":32}'; // 正确的JSON字符串
let strJson2 = `{"name":1,"age":32}`; // 正确的JSON字符串
let strJson3 = "{'name':1,'age':32}"; // 错误的JSON字符串
let strJson4 = `{'name':1,'age':32}`; // 错误的JSON字符串

4.3、JSON数组形式

JSON的数组形式对应着js中的数组,但也有以下区别

  • 数组中字符串必须用双引号
  • 数组中成员有对象类型,则需要满足JSON对象格式要求
  • 不支持undefined类型
[
  {
    id: 1,
    username: "学生1",
    phone: "123456",
    email: "123@163.***",
  },
  {
    id: 2,
    username: "学生2",
    phone: "156984",
    email: "666@163.***",
  },
  {
    id: 3,
    username: "星辰大海",
    phone: "18966",
    email: "888@163.***",
  },
]

5、JSON的常用方法

方法 说明
JSON.stringify() 可以将js基本数据类型、对象或者数组转化为JSON格式的字符串
JSON.parse() 可以将JSON格式的字符串转化为js对应的数据类型

注:通常用来转化对象和数组

JSON.parse()方法将JSON数据格式转化为对应的数据类型

<script>
        let num = JSON.parse('1');
        console.log(num,typeof num);

        let boo = JSON.parse('true');
        console.log(boo,typeof boo);

        let n = JSON.parse('null');
        console.log(n,typeof n);

        let arr = JSON.parse('[null,123,"我是json",{"username":"张三"}]');
        console.log(arr,typeof arr);

        let obj = JSON.parse('{"username":"李四","password":"123456@163.***"}');
        console.log(obj,typeof obj);

    </script>

JSON.stringify()方法将其它数据类型转化为JSON数据格式

        let number = JSON.stringify(123);
        console.log(number,typeof number);

        let n2 = JSON.stringify(null);
        console.log(n2,typeof n2);

        let boolear = JSON.stringify(true);
        console.log(boolear,typeof boolear);

        let arr2 = JSON.stringify(["好玩","好看",123]);
        console.log(arr2,typeof arr2);

        let obj2 = JSON.stringify({hobby:'轮滑'});
        console.log(obj2,typeof obj2);
转载请说明出处内容投诉
CSS教程_站长资源网 » 一文彻底搞懂JSON数据

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买