JSON详细教程

news2024/9/25 9:37:27

😊JSON详细教程

    • 🚩JSON简介
    • ☃️JSON语法规则
      • 🔊JSON和JavaScript对象的区别
    • ☃️JSON数据类型
      • 字符串
      • 🔊数字
      • 🔊布尔值
      • 🔊数组
      • 🔊对象
      • 🔊Null
    • ☃️JSON对象
      • 🔊访问JSON对象的值
      • 🔊循环对象
      • 🔊修改JSON对象的值的方法
      • 🔊删除JSON对象属性
    • ☃️JSON数组
      • 🔊访问JSON数组里的值
      • 🔊修改JSON数组里的值
      • 🔊删除JSON数组元素
    • ☃️JSON的使用
      • 🔊JSON.parse()
      • 🔊JSON.stringify()
      • 🔊JSON5
    • 📖总结

😊各位小伙伴们,新文章出炉了!!!



🚩JSON简介

在这里插入图片描述
JSON 是 JavaScript 对象表示法(JavaScript Object Notation)的缩写,它是一种轻量级的数据交换格式(数据交换是指,两设备之间建立连接并互相传递数据的过程)。类似XML,但比XML更流行,它易于阅读和编写,并且易于解析和生成。JSON在Web开发领域有着举足轻重的地位。并且大多数编程语言都支持JSON,一些本身不支持的语言也可以通过集成第三方库使用JSON。

JSON是基于ECMAScript(European Computer Manufactures Association,欧洲计算机协会制定的JS规范)的一个子集,完全采用独立于编程语言的文本格式来存储和表示数据。JSON易于计算机解析和生成,通常用于Web客户端(浏览器)与Web服务器之间传递数据。

JSON与XML相对比,既有优点,也有不足。与XML相同的是:JSON是纯文本,其本身具有“自我描述性(人类可读)”,和XML一样都具有层级结构(值中存在值),都可以被JavaScript进行解析,同时也可以使用AJAX进行传输。与XML不同的是:JSON没有结束标签,语法格式上相对于XML更简洁,且读写速度更快,能够使用内建的JavaScript eval()方法进行解析,省略了保留字。

之所以使用JSON,最主要的原因是JavaScript,JavaScript是Web开发中不可或缺的技术之一,而JSON是基于JavaScript的一个子集,JavaScript默认就支持JSON,JSON被广泛应用于Web开发、移动应用、API接口设计等领域。例如,在前后端交互中,使用JSON作为数据传输格式可以方便地实现数据的序列化和反序列化。



☃️JSON语法规则

JSON中的键值对是由一个键和一个值组成,它们之间用冒号:分割,多个键值对之间用逗号,分割。键必须为字符串类型,值可以是字符串、数字、布尔值、对象、数组或null。键和字符串都必须使用双引号括起来。

语法格式:

key:value
名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:
"name":"学习JSON"

需要注意的是,JSON语法中不能出现单引号和结束分号;,因为它是一种纯数据格式,不是语句。另外,JSON语法还可以使用反斜线\进行转义,用于表示一些特殊字符和字符集。

🔊JSON和JavaScript对象的区别

JSON和JavaScript对象有很多相似之处,比如它们都可以表示键值对形式的数据,都可以通过点运算符访问成员等,但在很多方面也有重要的区别:

  • JSON是一种数据格式,主要用于在不同编程语言之间传输和共享数据;而JavaScript对象则是JavaScript程序中的一个基本概念,用于封装数据和行为。

  • JSON只能包含六种数据类型:字符串、数字、布尔值、数组、对象和null;而JavaScript对象除了这些之外,还可以包含函数和其他类型的值。

  • JSON中的键必须用双引号包裹;而JavaScript对象的键既可以使用单引号,也可以使用双引号或不使用引号。

  • JSON不能包含注释;而JavaScript对象则可以包含注释。

  • JSON是一种纯文本格式,可以直接在网络上传输和存储;而JavaScript对象则需要被序列化成JSON格式才能在网络上传输和存储。



☃️JSON数据类型

字符串

JSON中的字符串需要使用双引号定义(字符串必须使用双引号,不能使用单引号),例如"hello word"字符串中可以包含零个或多个Unicode字符。另外,JSON的字符串中也可以包含一些转义字符。

{
    "name":"John",
    "sex":"男",
    "address":"中国"
}

🔊数字

JSON中的数字既可以是整数,也可以是浮点数。但是,JSON中不能使用八进制和十六进制表示数字,但可以使用eE来表示10的指数。

{
    "number1":1,
    "number2":2,
    "number3":3
}

🔊布尔值

JSON中的布尔值只有两个,即truefalse

{
    "value1":true,
    "value2":false
}

🔊数组

JSON中的数组是一组有序的值的集合,每个值都用逗号分隔,例如:[1, 2, 3]。

{
    "array":[
        {"name":"张三","age":18},
        {"name":"李四","age":19},
        {"name":"王五","age":20}
    ]
}

🔊对象

JSON中的对象是一组键值对的集合,每个键值对都用逗号分隔,值书写在{}中。JSON对象可以包含多个名称/值对。例如:{“name”: “John”, “age”: 30}。

{
    "name":"John",
    "age":18,
    "city":"New York"
}

🔊Null

JSON中的null表示没有任何值。



☃️JSON对象

JSON 对象是由键值对组成的无序集合,键和值使用冒号:分隔,每个键值对之间使用逗号 ,分隔。键必须是字符串类型,值可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null),JSON对象使用在大括号{...}中书写。例如:{"name": "Alice", "age": 25}

实例:

{
    "name":"张三",
    "age":18,
    "sex":"男"
    ...
}

🔊访问JSON对象的值

点运算符(.):如果知道键的名称,可以使用点运算符直接访问对象中的值。语法格式为 对象.键。例如,假设有一个 JSON 对象 person,包含键值对 { "name": "Alice", "age": 25 },可以通过 person.name 来访问 name 的值,通过 person.age 来访问 age 的值。
在这里插入图片描述
运行结果如下
在这里插入图片描述
方括号运算符([ ]):如果不知道键的名称,或者键的名称包含特殊字符,可以使用方括号运算符来访问 JSON 对象中的值。语法格式为 对象[键]。例如,假设有一个 JSON 对象 person,包含键值对 { "name": "Alice", "age": 25 },可以通过 person["name"] 来访问 name 的值,通过 person["age"] 来访问 age 的值。
在这里插入图片描述
运行结果如下
在这里插入图片描述
假设有一个 JSON 对象 person,包含嵌套的键值对:

var person = {
    "name": "Alice",
    "age": 25,
    "address": {
        "street": "123 Main St",
        "city": "New York",
        "country": "USA"
    }
};

要访问嵌套对象中的值,可以使用连续的点运算或方括号运算符。例如,要访问地址的城市,可以使用 person.address.cityperson["address"]["city"]

var city = person.address.city; // "New York"
var city = person["address"]["city"]; // "New York"

运行结果如下
在这里插入图片描述
总之,使用点运算符或方括号运算符,可以根据键的名称或索引值来访问 JSON 对象中的值,无论是在一级还是多级嵌套的情况下。

🔊循环对象

在JavaScript中,有两种主要的方法可以用来循环JSON对象的属性。

可以使用for-in来循环对象的属性

var jsonObject = { "name": "John", "age": 30, "city": "New York" };
for (var key in jsonObject) {
    if (jsonObject.hasOwnProperty(key)) {
        console.log("Key: " + key);
        console.log("Value: " + jsonObject[key]);
    }
}

运行结果如下
在这里插入图片描述
在使用for...in语句时,需要检查对象是否拥有该属性,因为某些内置属性也可能被包含在for…in循环中。如果你只想遍历自己的自定义属性,可以使用hasOwnProperty()方法。

🔊修改JSON对象的值的方法

要修改JSON对象的值,首先需要将JSON字符串转换为JavaScript对象,然后再对其中的属性进行修改。以下是具体的步骤:

1.将JSON字符串转换为JavaScript对象:可以使用JSON.parse()函数将JSON字符串转换为JavaScript对象。

let jsonStr = '{"name":"John", "age":30, "city":"New York"}';
let jsonObj = JSON.parse(jsonStr);

2.修改JavaScript对象的值:可以使用点运算符或方括号运算符来修改JavaScript对象的属性值。

// 使用点运算符
jsonObj.name = 'Mike';

// 使用方括号运算符
jsonObj['age'] = 45;

3.将JavaScript对象转换回JSON字符串:可以使用JSON.stringify()函数将JavaScript对象转换回JSON字符串。

let updatedJsonStr = JSON.stringify(jsonObj);
console.log(updatedJsonStr); // 输出 {"name":"Mike","age":45,"city":"New York"}

运行结果如下
在这里插入图片描述
注意,在使用JSON.parse()JSON.stringify()函数时,需要确保字符串的内容符合JSON规范,否则可能会抛出错误。另外,使用方括号运算符可以更灵活地操作属性,特别是当不确定属性名称或者属性名称来自变量时。

🔊删除JSON对象属性

要删除JSON对象中的某个属性,可以使用JavaScript的delete运算符。

delete jsonObj.age;
//或者使用中括号([])来删除 JSON 对象的属性
delete myObj.sites["age"]

检查该属性是否已被成功删除

console.log(jsonObj.age); // 输出 undefined

运行结果如下
在这里插入图片描述
注意,在使用delete运算符时,如果该属性存在,则会被成功删除并且返回true;如果该属性不存在,则不会报错并且返回false。此外,删除了某属性后,该属性的值变为undefined,但其键仍存在于对象中,只是值为空。因此,如果想彻底删除某个属性,还需要将其从对象中移除。

☃️JSON数组

JSON 数组是有序的值的集合,用方括号 [] 表示,每个值之间使用逗号 , 分隔。值可以是任意类型,包括字符串、数值、布尔值、对象或其他数组。例如:["apple", "banana", "orange"]

实例

{
    "name":"网站",
    "num":3,
    "sites":["google","taobao","baidu"]
}

🔊访问JSON数组里的值

1.索引访问:JSON 数组中的值按照索引顺序排列,索引从 0 开始。你可以使用方括号运算符 [] 结合索引来访问数组中的值。语法格式为 数组[索引]。例如,假设有一个 JSON 数组 fruits,包含多个水果:

var fruits = ["apple", "banana", "orange"];

可以通过索引访问数组中的值。例如,使用 fruits[0] 可以访问数组中的第一个元素,使用 fruits[1] 可以访问数组中的第二个元素,以此类推。

var firstFruit = fruits[0]; // "apple"
var secondFruit = fruits[1]; // "banana"

运行结果如下
在这里插入图片描述
2.循环遍历:如果想遍历整个 JSON 数组并访问其中的每个值,可以使用循环(如 for 循环或 forEach 循环)来实现。例如,使用 for 循环来遍历 fruits 数组:

var fruits = ["apple", "banana", "orange"];

for (var i = 0; i < fruits.length; i++) {
    console.log(fruits[i]);
}

运行结果如下
在这里插入图片描述
要访问嵌套 JSON 数组中的值,可以结合点运算符和方括号运算符。使用点运算符可以直接访问到数组对象,在这之上再使用索引或键来访问特定的属性。同时,可以使用循环来遍历整个 JSON 数组。

假设有一个 JSON 对象 data,包含嵌套的数组:

var data = {
    "students": [
        { "name": "Alice", "age": 20 },
        { "name": "Bob", "age": 25 },
        { "name": "Charlie", "age": 22 }
    ]
};

要访问学生数组中的第一个学生的姓名,可以使用 data.students[0].namedata["students"][0]["name"]

var name = data.students[0].name; // "Alice"
var name = data["students"][0]["name"]; // "Alice"

运行结果如下
在这里插入图片描述

🔊修改JSON数组里的值

要修改JSON数组中的值,可以先使用JSON.parse()函数将JSON字符串转换为JavaScript数组,然后按照以下步骤进行修改:

1.通过索引访问数组元素

let jsonArray = JSON.parse('[{"name":"John", "age":30}, {"name":"Jane", "age":20}]');
let obj = jsonArray[0];

2.要修改数组元素中的属性,可以直接使用点运算符或方括号运算符

obj.name = 'Mike'; // 直接使用点运算符
obj['age'] = 45; // 使用方括号运算符

3.修改完对象属性后,需要再次将整个数组转换回JSON格式

jsonArray = JSON.stringify(jsonArray);
console.log(jsonArray); // 输出 '[{"name":"Mike","age":45},{"name":"Jane","age":20}]'

代码运行如下
在这里插入图片描述
需要注意的是,如果JSON数组中的元素本身也是一个对象,那么还需要先将其转换为JavaScript对象,才能进行修改。此外,修改后的JSON字符串需要再次使用JSON.stringify()函数转换为JSON格式。

🔊删除JSON数组元素

要删除JSON数组中的值,可以先使用JSON.parse()函数将JSON字符串转换为JavaScript数组,然后按照以下步骤进行删除:

1.使用标准的JavaScript数组方法删除元素

let jsonArray = JSON.parse('[{"name":"John", "age":30}, {"name":"Jane", "age":20}]');

// 删除第一个元素
jsonArray.splice(0, 1);

console.log(JSON.stringify(jsonArray)); // 输出 '[{"name":"Jane","age":20}]'

运行结果如下
在这里插入图片描述
2.如果想更精确地指定要删除哪个元素,也可以通过索引来查找并删除它

let jsonArray = JSON.parse('[{"name":"John", "age":30}, {"name":"Jane", "age":20}]');

// 删除“John”对象
for(let i=0; i<jsonArray.length; i++) {
    if(jsonArray[i].name === 'John') {
        jsonArray.splice(i, 1);
        break;
    }
}

console.log(JSON.stringify(jsonArray)); // 输出 '[{"name":"Jane","age":20}]'

运行结果如下
在这里插入图片描述
需要注意的是,这些方法只能删除整个元素,而不能删除单个属性。如果要删除属性,需要先将元素转换为对象,再使用delete运算符删除相应的属性,然后将整个数组转换回JSON格式。

☃️JSON的使用

🔊JSON.parse()

JSON.parse() 是一个内置于所有现代浏览器和Node.js中的JavaScript函数,用于将符合JSON格式的字符串解码为JavaScript对象。以下是关于JSON.parse()的一些重要细节:

  1. 语法:JSON.parse(text[, reviver])

    • text:必需参数,表示要被解析成JavaScript值的字符串。
    • reviver:可选参数,表示转换器函数,它可以处理每个属性。在将属性添加到新创建的对象之前,会对每个属性应用此函数。
  2. 返回值:如果输入的是有效的JSON文本,那么JSON.parse()函数将返回一个新的JavaScript对象。如果输入的是无效的JSON文本,则会抛出一个SyntaxError异常。

  3. 示例:

    let jsonString = '{"name":"John", "age":30, "city":"New York"}';
    
    let obj = JSON.parse(jsonString);
    
    console.log(obj); // 输出:{ name: 'John', age: 30, city: 'New York' }
    
  4. 注意事项:

    • 在使用JSON.parse()函数时,需要注意输入的字符串必须是有效的JSON格式,否则会导致解析失败并抛出错误。
    • 如果在解析过程中遇到未知字符或非法语法,则会导致JSON.parse()函数停止解析并抛出错误。
    • 如果想要更全面地控制解析过程,可以提供一个可选的转换器函数作为第二个参数,以便在将属性添加到新创建的对象之前对其进行处理。

运行结果如下
在这里插入图片描述

🔊JSON.stringify()

JSON.stringify() 是一个内置于所有现代浏览器和Node.js中的JavaScript函数,用于将JavaScript值转换为符合JSON格式的字符串。以下是关于JSON.stringify()的一些重要细节:

  1. 语法:JSON.stringify(value[, replacer[, space]])

    • value:必需参数,表示要被转换成JSON字符串的JavaScript值。
    • replacer:可选参数,表示转换器函数或数组,它可以决定哪些值应该被包含在最终的JSON字符串中,以及它们应如何被转换。
    • space:可选参数,表示要在输出的JSON字符串中的每个级别前插入多少个空格,以提高可读性。
  2. 返回值:如果输入的值可以被安全地转换为JSON格式,那么JSON.stringify()函数将返回一个新的JSON字符串。如果输入的值不能被安全地转换为JSON格式,则会抛出一个TypeError异常。

  3. 示例:

    let obj = { name: 'John', age: 30, city: 'New York' };
    
    let jsonString = JSON.stringify(obj);
    
    console.log(jsonString); // 输出:'{ "name": "John", "age": 30, "city": "New York" }'
    
  4. 注意事项:

    • 在使用JSON.stringify()函数时,需要注意JavaScript对象中的函数、RegExp对象、Date对象、DOM节点等特殊类型的值无法被安全地转换为JSON格式,因此在转换过程中会被忽略。
    • 如果提供的可选参数replacer是一个数组,那么只有那些在数组中存在的属性才会被包含在最终的JSON字符串中。
    • 如果提供了可选参数space,那么在输出的JSON字符串中的每个级别前都会插入相应数量的空格,以提高可读性。

运行结果如下
在这里插入图片描述

🔊JSON5

JSON5是一种扩展的JSON语法,它允许使用一些额外的特性,如:

  • 多行注释(// 和 /* … */);
  • 字面量NaN和Infinity;
  • 布尔值true和false的大写形式;
  • 函数表达式;
  • 箭头函数;
  • Set和Map结构;
  • 引用类型;
  • 类;
  • 导出和导入;
  • 字符串模板等等。

JSON5并不直接支持JavaScript的所有功能,而是只支持一些常用的特性。这使得它可以在跨平台的环境中更好地工作,并且具有更好的兼容性。

注意,尽管许多现代浏览器都支持JSON5,但并不是所有的环境都支持。因此,在实际使用中,建议先使用JSON.parse()JSON.stringify()函数将JSON5转换为标准的JSON,然后再进行处理。

📖总结

总的来说,JSON 是一种简洁、易于理解和跨平台的数据格式,常用于前后端数据传输和存储。通过学习 JSON,我们可以更好地处理和操作数据。


🎨觉得不错的话记得点赞收藏呀!!🎨

😀别忘了给我关注~~😀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1263289.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux脚本sed命令

目录 一. sed命令定义 二. sed命令选项 三. sed语法选项 四. 案例解释 1. 打印奇数或偶数行 2. 打印固定行数 3. 打印包含字符的行 4. 打印特定字符首尾行 5. 删除固定行数 6. 删除特定字符行 7. 插入在固定行中 8. 替换规定行数 9. 使用变量 10. 多点编辑 11. 分…

研究前沿|NAR:一个综合性的植物代谢组数据库

引言 2023年10月&#xff0c;华中农业大学小麦改良创新团队陈伟教授课题组在Nucleic Acids Research发表题为“PMhub 1.0: a comprehensive plant metabolome database”的文章&#xff0c;系统介绍了他们开发的植物代谢分析网站&#xff08;PMhub&#xff09;的功能与价值。P…

【AICFD案例教程】水冷板散热分析

AICFD是由天洑软件自主研发的通用智能热流体仿真软件&#xff0c;用于高效解决能源动力、船舶海洋、电子设备和车辆运载等领域复杂的流动和传热问题。软件涵盖了从建模、仿真到结果处理完整仿真分析流程&#xff0c;帮助工业企业建立设计、仿真和优化相结合的一体化流程&#x…

基于SpringBoot的手机官方商城系统

基于SpringBoot的手机官方商城系统 摘要&#xff1a;随着电子商务的发展&#xff0c;网上购物已成为人们普遍的购物方式。与此同时&#xff0c;网上支付也得到了迅速的发展&#xff0c;大有赶超传统支付的趋势。在今天这个信息化程度高、生活节奏快的现代社会&#xff0c;传统…

强化学习Q-Learning算法和简单迷宫代码

使用到的符号&#xff1a; agent 代理 reward 奖励 state(s) 状态 action(a) 行为 R reward 矩阵 Q 矩阵&#xff1a;表示从经验中学到的知识 episode&#xff1a;表示 初始→目标 一整个流程 贝尔曼方程&#xff08;迭代公式&#xff09;&#xff1a; Q ( s , a ) ← Q ( s …

网络割接,用VRRP替换HSRP,你得这么割才行!

组网需求 如图3-11所示&#xff0c;C6500作为核心层设备上行连接出口路由器NE40E-X3&#xff0c;下行连接接入层设备CE6800。C6500上配置HSRP实现冗余备份网关&#xff0c;同时在二层网络部署MSTP破除环路。 总体思路 HSRP为CISCO私有协议&#xff0c;CE系列交换机&#xff08…

RabbitMQ之延迟消息

文章目录 前言一、死信交换机二、延迟消息死信交换机实现延迟消息图解流程 DelayExchange插件实现延迟消息安装插件声明延迟交换机发送延迟消息 总结 前言 死信交换机、延迟消息 一、死信交换机 当一个队列中的消息满足下列情况之一时&#xff0c;可以成为死信&#xff08;dea…

微信小程序推送服务号消息(一)【Go+微信小程序+微信服务号+微信开放平台】

一、需求场景 业务需要给微信小程序用户在某些场景推送微信服务号消息&#xff0c;例如&#xff1a;订单即将超时&#xff0c;电子合同签约超时等&#xff1b; 二、开发准备 1、开通微信服务号 入口&#xff1a;微信公众平台 1.1 在服务号中获取推送消息所需的配置信息&#…

头插法巧解任意链表区间反转

题目链接&#xff1a;https://leetcode.cn/problems/reverse-linked-list-ii/description/?envTypestudy-plan-v2&envIdtop-interview-150 头节点插入法&#xff0c;设置一个虚拟节点&#xff0c;不断循环到要反转的前面一个位置&#xff0c;哪怕是1也能包含进去。接着反…

Python UUID 完全指南

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com UUID&#xff08;Universally Unique Identifier&#xff0c;通用唯一标识符&#xff09;是一种全局唯一标识符生成方式&#xff0c;用于创建独一无二的标识符。Python的 uuid 模块提供了多种方法用于生成各种类…

四丶openlayer之瓦片地图

瓦片地图源于一种大地图解决方案&#xff0c;针对一整块非常大的地图进行切片&#xff0c;分成很多相同大小的小块地图&#xff0c;在用户访问的时候&#xff0c;再一块一块小地图加载&#xff0c;拼接在一起&#xff0c;从而还原成一整块大的地图。这样做的优点在于&#xff0…

【算法】FFT-1(递归实现)(不包括IFFT)

FFT 多项式多项式乘法复数及运算导数泰勒公式及展开式欧拉公式单位根 FFTCode IFFT 多项式 我们从课本中可以知道&#xff0c;一个 n − 1 n-1 n−1 次的多项式可以写成 a 0 a 1 x a 2 x 2 a 3 x 3 ⋯ a n − 1 x n − 1 a_{0}a_{1}xa_{2}x^2a_{3}x^3\dotsa_{n-1}x^{n-…

从 0 搭建 Vite 3 + Vue 3 Js版 前端工程化项目

之前分享过一篇vue3+ts+vite构建工程化项目的文章,针对小的开发团队追求开发速度,不想使用ts想继续使用js,所以就记录一下从0搭建一个vite+vue3+js的前端项目,做记录分享。 技术栈 Vite 3 - 构建工具 Vue 3 Vue Router - 官方路由管理器 Pinia - Vue Store你也可以选择vue…

2023年【G2电站锅炉司炉】考试试卷及G2电站锅炉司炉模拟试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 G2电站锅炉司炉考试试卷是安全生产模拟考试一点通生成的&#xff0c;G2电站锅炉司炉证模拟考试题库是根据G2电站锅炉司炉最新版教材汇编出G2电站锅炉司炉仿真模拟考试。2023年【G2电站锅炉司炉】考试试卷及G2电站锅炉…

Unity 接入TapADN播放广告时闪退 LZ4JavaSafeCompressor

通过跟踪安卓日志&#xff0c;发现报如下错误 Didnt find class "com.tapadn.lz4.LZ4JavaSafeCompressor" 解决方案&#xff1a; 去掉Minify这边的勾选&#xff0c;再打包即可。

香港优才计划是什么意思?一文详解2023年最新政策!

香港优才计划是什么意思&#xff1f;一文详解2023年最新政策&#xff01; 目前香港优才计划申请火热&#xff0c;但是还是有很多新手不太了解这个项目&#xff0c;跟风申请绝对不是什么好事&#xff0c;先了解清楚再考虑也是对自己对家人的一种交代。这篇文章就再来科普下。 优…

AWVS 使用方法归纳

1.首先确认扫描的网站&#xff0c;以本地的dvwa为例 2.在awvs中添加目标 输入的地址可以是域名也可以是ip&#xff0c;只要本机可以在浏览器访问的域名或ip即可 添加地址及描述之后&#xff0c;点击保存&#xff0c;就会展现出目标设置选项 business criticality译为业务关键…

SpringCloud之服务网关Gateway组件使用——详解

目录 一、网关介绍 1.什么是服务网关 2. 为什么需要网关 3.网关组件在微服务中架构 二、服务网关组件 1. zuul 1.x 2.x(netflix 组件) 1.1 zuul版本说明 2. gateway (spring) 2.1 特性 2.2 开发网关动态路由 2.2.1.创建项目引入网关依赖 2.2.2 快捷方式配置路由 2.2…

C++学习——类和对象(上)

C学习——类和对象 一、面向对象和面向过程的初步认识二、什么是类 一、面向对象和面向过程的初步认识 我们之前学习了C语言&#xff0c;我们知道 ① C语言&#xff1a;C语言是一门面向过程的语言&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函…

Web安全之SQL注入:明明设置了强密码,为什么还会被别人登录?

一、背景 让我们先来看一个案例。某天&#xff0c;当你在查看应用的管理后台时&#xff0c;发现有很多异常的操作。接着&#xff0c;你很快反应过来了&#xff0c;这应该是黑客成功登录了管理员账户。于是&#xff0c;你立刻找到管理员&#xff0c;问他是不是设置了弱密码。管…