这是我参与8月更文挑战的第19天,活动详情查看:8月更文挑战
学习贵在坚持, 笔记是灵魂, 温故而知新, 时不时翻一翻, 回顾一下知识点, 加深记忆, 事半功倍!
前文我们学习了 Node.js 实战: 文件系统模块 结合 HTTP模块-搭建一个简单的 本地文件服务器,
通过读取本地文件, 模拟了数据接口, 调取本地的 .json 文件并返回, 就是前后端通信用到的最多的数据结构了吧
那咱们今天就来学习一下 这个了不起的数据结构: JSON
深入了解 JSON
今天来聊一聊 可以说是 世界上最受欢迎的数据交换格式 JSON 域名: json.org
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。JSON 采用完全独立于语言的文本格式,但是也使用了类似于 C 语言家族的习惯(包括 C, C++, C#, Java, JavaScript, Perl, Python 等)。 这些特性使 JSON 成为理想的数据交换语言。
你知道 JSON 的大名吗?
JSON 是我们常见的, 也是流行的序列化格式. 它的全称为: JavaScript Object Notation
如题就是我们经常打交道的 JSON, 和我们熟悉的 JavaScript 即 JS, 会不会有联想到一起呢?
JSON 的书写格式
JSON 的书写格式看起来和我们编写 JavaScript 的对象和数组的方式差不多, 但是 JSON有一些限制:
- 所有属性名都须要用双引号
""括起来, - 并且只允许使用简单的数据表达式, 比如: 数字/字符串/对象/数组, 而不函数调用/涉及计算的任何内容..
- JSON 中还不允许有注释...
比如项目中接口一般返回的格式, 包含的 相应字段:
这里是 掘金抽奖页面 展示抽到奖品列表接口 返回的数据格式:
包含用到的数据: 请求接口返回的状态 "err_msg"/ 用户名 "user_name"/ 统计数据 "count" 等
{
"data": {
"count": 544,
"lotteries": [
{
"lottery_image": "https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ab31c183950541d4a0731c0b8765b173~tplv-k3u1fbpfcp-no-mark:0:0:0:0.image",
"lottery_name": "掘金马克杯",
"user_avatar": "https://sf3-ttcdn-tos.pstatp.com/img/user-avatar/0c1e7da2d3aa42f640a3e5574f584eae~300x300.image",
"user_name": "最爱你的人"
}
],
"err_msg": "success",
"err_no": "0"
}
}
JSON 数据格式转换
JavaScript 中为我们提供了两个转换数据的方法函数: JSON.stringify() 和 JSON.parse()
JSON.stringify(value) 对获取的 JavaScript 值 进行编码成为 JSON编码 的字符串
JSON.parse(上面格式化的字符串) 对上面编码的字符串进行 转换 解码为它编码的值
示例:
let stringifyString = JSON.stringify({ err_msg: 'success', data: ['lists'] })
console.log(stringifyString)
// --> {"err_msg":"success","data":["lists"]}
let parseString = JSON.parse(stringifyString)
console.log(parseString.data) // --> ["lists"]
深入其解析原理
这里贴下其官网(作者买下的域名)的一些图, 靠大家自己领悟吧..
1. 对象 Object 的解析
2. 数组 Array 的解析
3. 值 value 的解析
4. 字符 String 的解析
4. 数字 number 的解析
4. 空格 whitespace 的解析
更多阅读
更多更文阅读请查收:
【Node.js】day16-文件系统模块、 【Node.js】day17-HTTP 模块、
【Node.js】包管理工具 npm & yarn 的使用、
【Github】多人协作(二)、 【Github】基本使用(一)、
【Git】代码版本控制-git 初识&基本操作(一)、 【Git】进阶(二)、
【Node.js】搭建自动化开发环境-基本介绍、 【工具准备】、 【开工】、 【详细步骤(四)】、 【模块处理工具(五)】、 【模块化编程的理解】
跟上节奏, 一步一步! 下文更新预告:
接下来会继续详细学习 Node.js 的相关方法, 冲鸭!! xdm
学习用到的效率工具, 提高开发效率, 为我们的开发提效赋能! 加油!! go~~