JSON学习笔记
JSON为服务器和客户端传输最常用的数据格式
其它的传输格式:
- XML:在早期的网络传输中主要是使用XML来进行数据交换的,但是这种格式在解析、传输各方面都弱于JSON,所以目前已经很少在被使用了
- Protobuf:另外一个在网络传输中目前已经越来越多使用的传输格式是Protobuf,但是直到2021年的3.x版本才支持JavaScript,所以目前在前端使用的较少(Google推出)
1 创建JSON对象
JSON (JavaScript Object Notation)是一种可以在服务器和客户端之间传输的轻量级数据格式,并不是编程语言
1.1 JSON语法
JSON文件都是被包裹在一个大括号中 {},通过key:value的方式来表达数据。看起来同 JavaScript 的对象表达方式十分相似,但是有所不同:JSON的Key必须包裹在一个双引号中,在实践中,编写 JSON 的时候,忘了给 Key 值加双引号或者是把双引号写成单引号是常见错误。
JSON 文件中无法使用注释,试图添加注释将会引发报错。
- 轻量级:体现在JSON的体积小。虽然一个小的体积可能表示的数据很多。
在现代的开发中,能够做数据交换的,包括两个:JSON和XML
- JSON和XML都是非常标准的数据交换格式
- XML体积大,解析难度大
- JSON体积小,解析更容易
- XML和JSON相对比来说,XML的语法严格,json的语法相对松散。
1.2 JSON的数据格式
- 数字,包含浮点数和整数
- 字符串,需要包裹在双引号中
- Bool值,true 或者 false
- 数组,需要包裹在方括号中 []
- 对象,需要包裹在大括号中 {}
- Null
其他任何格式都会触发报错
1 | var emp = { |
2 JSON对象的属性值
JSON对象的属性值可以为JSON对象
1 | // json对象1 |
案例
1 | //设计一个JSON格式的数据可以表示全班人数和每个学生信息 |
3 JSON序列化
1 | // 转成字符串保存 |
3.1 stringify
stringify方法:将JavaScript类型转成对应的JSON字符串
1、replace
第二个参数replace
1 | obj = { |
2、space
第三个参数space:缩进空格
1 | obj = { |
如果对象本身包含toJSON方法,那么会直接使用toJSON方法的结果
1 | obj = { |
3.2 parse
parse方法:解析JSON字符串,转回对应的JavaScript类型,提供可选的reviver函数用以在返回之前对所得到的对象执行变换(操作)
1 | const info2 = JSON.parse(objString, (key, value) => { |
3.3 使用JSON序列化深拷贝
1 | obj = { name: 'why', age: 18, friend: { name: 'kobe' } } |
4 正则表达式
1、什么是正则表达式,有什么用?
正则表达式是一门独立的学科,基本每个语言都支持。
正则表达式不是JS专属的。不过在JS中使用居多。
通常使用正则表达式进行字符串格式匹配。
正则表达式是有一堆特殊的符号组成的一个表达式。每一个特殊的符号都有特殊的代表含义。
2、对于javascript程序员来说,我们对于正则表达式掌握到什么程度呢?
第一:能够看懂正则表达式
第二:简单的正则要会写
第三:要能够独立的从网络当中搜索到你想要的正则表达式(搜索能力要有)
第四:要会创建JS的正则表达式对象。
第五:要会调用JS正则表达式对象的方法。
3、常见的正则表达式符号有哪些?. 匹配除换行符以外的任意字符\w 匹配字母或数字或下划线或汉字\s 匹配任意的空白符\d 匹配数字\b 匹配单词的开始或结束^ 匹配字符串的开始$ 匹配字符串的结束
* 重复零次或更多次 0-N次+ 重复一次或更多次 1-N次? 重复零次或一次 0或1次{n} 重复n次 n次{n,} 重复n次或更多次 n+次{n,m} 重复n到m次 n到m次
注意:数量永远匹配的都是前面的那个字符出现的次数。
\W 匹配任意不是字母,数字,下划线,汉字的字符\S 匹配任意不是空白符的字符\D 匹配任意非数字的字符\B 匹配不是单词开头或结束的位置[^x] 匹配除了x以外的任意字符[^aeiou] 匹配除了aeiou这几个字母以外的任意字符
| 表示或者
[a-z]{1} a到z所有的字符中的任意1个。
[a-zA-Z0-9]{3,} 前面这堆中的任意字符至少出现3个。
[1-9][0-9]{4,} qq号的正则表达式,最小的qq号是10000
[1-9] 没有指定数量的时候,默认是1个。
4、邮箱的正则表达式:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
这个邮箱地址从网上找了之后不一定能用,你需要测试。反复测试。
5、在JS中怎么创建正则表达式对象呢?
包括两种方式,重点使用第一种
第一种方式:直接量语法var regExp = /正则表达式/标记
第二种方式:使用内置类RegExp类。var regExp = new RegExp("正则表达式", "标记")
标记是可选项!!!!!都有哪些值可选呢?g:全局 globali: 忽略大小写 ignorecasegi: 全局扫描,并且忽略大小写。
6、正则表达式对象有一个很重要的方法:var emailRegExp = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/var ok = emailRegExp.test("用户输入的字符串");
返回值ok是true表示,匹配成功了。
其实在JS中,字符串String也是支持正则表达式的。
1 | <script> |
- 本文标题:JSON笔记
- 本文作者:馨er
- 创建时间:2021-11-27 14:01:18
- 本文链接:https://sjxbbd.vercel.app/2021/11/27/c19a71762a50/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!