JSON数据类型介绍 网络请求介绍

一、JSON数据类型介绍

1.什么是JSON?

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集,采用完全独立于语言的文本格式来存储和表示数据。

特点:简洁、易读、易解析

JSON的语法非常简洁明了,易于理解和编写。它支持多种数据类型,可以灵活地表示复杂的数据结构,且由于JSON独立于语言和平台,可以被多种编程语言支持和解析,使得不同平台之间的数据交换变得更加方便。

JSON成为了现代数据交换和存储的常用格式

2.JSON分类

JSON支持的数据类型可以分为简单数据类型和复杂数据类型两种
简单数据类型包括:
string(字符串):由零个或多个Unicode字符组成。在JSON中,字符串必须用双引号括起来。
number(数字):可以是整数或浮点数,JSON中不区分它们。JSON中的数字使用IEEE-754双精度浮点格式表示,不支持八进制和十六进制表示,但可以使用e或E来表示10的指数。
boolean(布尔值):只有两种状态,true和false。
null(空):表示一个空值或不存在的值。
复杂数据类型包括
Array(数组):是有序的值的集合,使用方括号[]括起来,数组中的值可以是任何JSON数据类型,包括另一个数组或对象。数组中的值用逗号分隔。
Object(对象):是无序的键值对集合,使用花括号{}括起来。在对象中,键(key)必须是字符串,且用双引号括起来,值(value)可以是任何JSON数据类型,包括另一个对象或数组。键和值之间用冒号分隔,键值对之间用逗号分隔。
JSON的字符串中也支持一些转义字符

转义字符说明
\\反斜线本身
\/正斜线
\"双引号
\b退格
\f换页
\n换行
\r回车
\t水平制表符
\uXXXX四位的十六进制数字,表示一个Unicode字符


3.作用

在实际应用中,JSON常用于前后端数据交换、配置文件存储、网络数据传输等场景。例如,在Web开发中,服务器经常返回JSON格式的数据给前端,前端解析这些数据后展示给用户。

4.语法

JSON可以表示三种类型:

  • 简单值:使用与JavaScript相同的语法,可以在JSON中表示字符串、数值、布尔值和null。
  • 对象:表示一组无序的键值对。键值对中的值可以是简单值,也可以是复杂数据类型。
  • 数值:表示一组有序的值的列表,数组的值可以是任意类型。

JSON不支持变量、函数或对象实例,是一种表示结构化数据的格式。

简单值

JSON数据形式:

5    // 数值
"Hello JavaScript"    // 字符串
null
对象

与JavaScript不同,JSON中的对象要求给属性加上引号

{
    "name": "Karry";
    "age": 24
}
 
// 属性的值也可以是复杂类型
{
    "school": {
        "name": "hafo", 
        "location": "Harbin"
    }
}
数组

JSON表示数组:

[24, "Karry", true]

JSON数组没有变量和分号。

把数组和对象结合,可以构造复杂的数据集合:

​
[
    {
        "title":"JSON数据类型",
        "authors":[
            "John"
        ],
        edition: 2
    },
    {
        "title":"JavaScript",
        "authors":[
            "Amy"
        ],
        edition: 3
    },
    {
        "title":"CSS",
        "authors":[
            "Karry"
        ],
        edition: 4
    }
]

​
解析与序列化

JSON对象有两个方法:

stringfy():把JavaScript对象序列化为JSON字符串
parse():把JSON字符串解析为原生JavaScript值

var book = {
    "title":"JavaScript",
    "authors":[
        "zhang"
    ],
    edition: 2
};
var jsonText = JSON.stringify(book);
alert(jsonText);    // {"title":"JavaScript","authors":["zhang"],"edition":2}

默认情况下,JSON.stringify()不包含任何字符或缩进

将JSON字符串直接传递个JSON.parse()可以得到相应的JavaScript值

var newBook = JSON.parse(jsonText);    

book与newBook具有相同的属性,但是彼此是相互独立的。

序列化选项

JSON.stringify()还可以接收两个参数:

  • 第一个参数:过滤器,一个数组或一个函数。
  • 第二个参数:一个选项,表示是否在JSON字符串中保留缩进
过滤结果

如果参数是数组,JSON.stringify()的结果只包含数组中列出的属性。

var book = {
    "title":"JavaScript",
    "authors":[
        "zhang"
    ],
    edition: 2
};
var jsonText = JSON.stringify(book, ["title", "authors"]);
console.log(jsonText);  // {"title":"JavaScript","authors":["zhang"]}

如果参数是函数,传入的函数接收两个参数,属性名和属性值,根据属性名可以知道如何处理属性。属性名是字符串,属性值并非键值对的值,键名可以是空字符串。

返回的值是相应键的值,如果函数返回undefined,那么该属性就会被忽略。

字符串缩进

JSON.stringify()的第三个参数用于控制结果中的缩进和空白符。如果是数值,表示每格缩进的空格数。

如果是字符串,这个字符串将用作JSON字符串的缩进符,缩进字符串最多只能包含10个字符。

toJSON()方法

JSON.stringify()并不能满足所有对象进行序列化的需求。可以给对象定义toJSON()方法,返回其自身的JSON数据格式。

解析选项

JSON.parse()方法也可以接收另一个参数,该参数是一个函数,将在每个键值对上调用。如果返回undefined,表示从结果中删除相应的键,如果返回其他值,则将该值插入到结果中。

var book = {
    "title":"Java programming",
    "authors":[
        "zhang",
    ],
    edition: 2,
    year: 2024,
    releaseDate: new Date(2024, 4,26)
};
var jsonText = JSON.stringify(book);
 
var newBook = JSON.parse(jsonText, function (key, value) {
    if (key == "releaseDate") {
        return new Date(value);
    } else {
        return value;
    }
});
console.log(newBook.releaseDate.getFullYear());    // 2024

上面新增了releaseDate属性,该属性保存着一个Date对象。经过序列化后,变成了一个有效的JSON字符串,然后又在newBook中还原成一个Date对象。

二、网络请求介绍

1.网络请求的分类

网络请求主要有八种

请求方式描述
GET发送请求来获得服务器上的资源【比如请求百度的页面】
POST向服务器提交资源让服务器处理【比如百度云盘上传资源】
HEAD主要用来检查资源或超链接的有效性或是否可以可达、检查网页是否被串改或更
PUT向指定资源位置上上传其最新内容
DELETE请求服务器删除某资源
CONNECTHTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS允许客户端查看服务器的性能
TRACE回显服务器收到的请求,主要用于测试或诊断

最常用的是GET和POST请求。

(1)GET请求:一般情况下,发送请求从服务器上获取资源,不会对服务器资源产生任何影响的时候使用GET请求。

(2)POST请求:向服务器发送数据(登录)、上传文件等让服务器处理,会对服务器资源产生影响的时候使用POST请求。

2.请求头常见参数

(1)User-Agent

指浏览器的名称。我们在向别人的服务器发送请求的时候,别人的服务器通过这个参数知道请求是从哪种浏览器发出的,这样就能返回正确的信息。但是如果不设置这个参数的话,我们如果使用Python发送去了请求,别人的服务器【大部分服务器】就知道这个请求时Python发出的,从而不给我们返回正确的数据。因此我们必须设定这个参数。

(2)Referer

表明这个网页是从哪个网站跳转过来的。有些网页只能从特定的链接跳转过来,如果不设置这个参数,有些网页就知道你是通过非浏览器方式试图获取他们的html页面,因此就不返回给你正确的数据。所以这个参数可以用来进行反爬虫设计,我们需要设定这个参数。

(3)Cookie

HTTP协议是无状态的。也就是同一个人在浏览器上发送了两次请求,服务器不知道这两个请求是否来自同一个人。因此这时候就用Cookie来做标识。一般登陆后才能访问的网页,这个时候就需要发送Cookie信息。

3.常见响应状态码

状态码含义
200请求成功
301永久重定向,资源(网页等)被永久转移到其它URL
404请求的资源(网页等)不存在
500内部服务器错误

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值