JSON 认识-了解-学习
全是双引号:键和字符串值,统统用英文双引号""包起来。别写注释:想写备注就在脑子里记着,或者写在旁边的 JS 文件里。别手滑:写完最后一个配置项,千万别顺手打逗号。写 JSON:你在app.json里写配置。这就像在填表格。你告诉微信:“我有 3 个页面,颜色是红色的。”(这是静态数据)。微信读取:微信客户端读取这个 JSON,把界面画好。写 JS:你在index.js里写逻辑。这就像在写剧本。你
1.基础认知层:JSON 是什么?
JSON的核心特点:
1.纯文本数据:它本质上就是一串有格式的文本,用来存储和传输数据。
2.键值对结构:和 JS 的对象字面量非常像,由 key: value 组成。
3.严格的语法规则(避坑重点):
所有的键(key)必须用双引号 “” 包起来。
字符串类型的值(value)也必须用双引号 “” 包起来。
绝对不能写注释(虽然开发者工具有时能容忍,但上传代码或真机运行可能会报错)。
1. 纯文本数据:它到底长什么样?
JSON 的本质就是一段纯文本(String)。你可以把它理解为前端和后端(服务器)之间传话的“普通话”。
举个例子:
假设你要把老板的信息传给服务器,在 JS 里你可能习惯这么写一个对象:
// 这是一个 JS 对象(电脑内存里的数据)
var boss = {
name: "老板",
age: 40
};
但是在网络传输或者存到小程序的本地缓存里时,它必须变成一段文本字符串。JSON 就是这段文本的标准格式:
// 这是一个 JSON 字符串(纯文本,用来传输或存储)
'{"name": "老板", "age": 40}'
你看,它就是把 JS 对象变成了一段带引号的文本。
2. 键值对与双引号的“死规矩”(最容易踩坑的地方)
这是新手写小程序配置文件(比如 app.json)时最容易报错的地方。请记住一个口诀:“JSON 里,除了数字、true、false,其他都要加双引号,而且键(key)必须加双引号!”
我们来看一个**错误的(JS 写法)和一个正确的(JSON 写法)**对比:
❌ 错误的写法(这是 JS 对象,不是 JSON):
{
name: '张三', // 报错!键 name 没加双引号
'age': 25, // 报错!JSON 严禁使用单引号
hobby: "打游戏", // 报错!键 hobby 没加双引号
isMarried: false // 这个是对的,布尔值不用引号
}
✅ 正确的 JSON 写法:
{
"name": "张三", // 键加了双引号,值(字符串)也加了双引号
"age": 25, // 键加了双引号,值(数字)不用加引号
"hobby": "打游戏", // 全部使用双引号 ""
"isMarried": false // 键加了双引号,布尔值不用加引号
}
避坑提示:在小程序里写 app.json 时,如果你手快用了单引号,或者偷懒没给键加引号,开发者工具立马就会报红,提示你“JSON 解析失败”。
3. 绝对不能写注释 & 不能有尾随逗号
在写 JS 代码时,我们习惯写 // 这是一行注释,或者在数组最后一个元素后面顺手打个逗号。但在 JSON 里,这些全是违法的。
❌ 错误的写法:
{
// 这是老板的配置信息 <-- 报错!JSON 里不允许写注释
"company": "科技公司",
"employeeCount": 50, <-- 报错!最后一个属性后面不能有逗号(尾随逗号)
}
✅ 正确的写法:
{
"company": "科技公司",
"employeeCount": 50
}
避坑提示:有时候你从别的地方复制一段配置代码粘贴到小程序里,发现死活报错,大概率就是因为复制过来的代码里带了 // 注释,或者多了一个逗号。删掉它们就好了。
总结一下
你只需要记住这三点,小程序里的 JSON 配置你就掌握 90% 了:
- 全是双引号:键和字符串值,统统用英文双引号
""包起来。 - 别写注释:想写备注就在脑子里记着,或者写在旁边的 JS 文件里。
- 别手滑:写完最后一个配置项,千万别顺手打逗号。
番外:脑残作者在学习时提出的傻子问题:
1.既然javascript等同于json,那我直接写个json不就行了,干嘛还要写JavaScript:
简单直接的回答是:它们不等同。JavaScript 是“活的”,JSON 是“死的”。
虽然它们长得像双胞胎,但它们的用途和能力完全不同。为了让你彻底明白,我用一个生活中的例子来打比方:
🍔 比方:汉堡 vs. 汉堡的配方单
- JavaScript 对象(代码) 就像是一个做好的汉堡。
- 它是“活”的,你可以直接咬一口(在代码里直接使用它,调用它的功能)。
- 它可以包含复杂的逻辑,比如“如果饿了就吃掉”。
- JSON(数据) 就像是一张写在纸上的配方单。
- 它是“死”的,你不能吃这张纸。
- 它只能记录最简单的信息(名字、价格、配料)。
- 它的作用是为了传递(把单子给厨师)或者保存(把单子锁进保险柜)。
🧐 为什么要这么麻烦?直接写 JS 不行吗?
在小程序开发中,我们之所以要写 JSON 文件,而不是 JS 文件,主要有以下三个核心原因:
安全性和沙箱机制(最重要)
- JS 文件:是可以执行代码的。如果你允许
app.js来配置页面,黑客可能就会写一行代码deleteAllUserData()藏在配置里。一旦你加载配置,数据就被删了。 - JSON 文件:是纯数据,它不能执行任何代码。它只能存数据,不能干坏事。小程序用它来配置页面路径、窗口颜色,因为微信只需要读这些数据,不需要执行什么复杂的逻辑,这样最安全。
跨语言通用性(通用护照)
- 你的小程序前端可能是用 JavaScript 写的,但你的后端服务器可能是用 Java、Python 或 PHP 写的。
- JavaScript 对象只有 JS 能看懂。
- JSON 是一种通用的标准。Java 能读,Python 能读,JS 也能读。所以前端和后端“传话”时,必须把 JS 对象变成 JSON 字符串发过去,对方才能听懂。
启动速度与解析
- 小程序启动时,微信客户端需要第一时间知道:“这个小程序有哪些页面?导航栏是什么颜色?”
- 读取一个纯文本(JSON)并解析它,比去执行一段复杂的 JavaScript 代码要快得多,也稳定得多。微信读完 JSON,就知道怎么画出界面框架了,然后再去加载逻辑代码。
📌 总结一下你的工作流
在你的小程序开发中,你会经历这样的过程:
- 写 JSON:你在
app.json里写配置。这就像在填表格。你告诉微信:“我有 3 个页面,颜色是红色的。”(这是静态数据)。 - 微信读取:微信客户端读取这个 JSON,把界面画好。
- 写 JS:你在
index.js里写逻辑。这就像在写剧本。你告诉微信:“当用户点击按钮时,去服务器拿数据。” - 数据传输:服务器把数据打包成 JSON 发给你。
- 变废为宝:你的 JS 代码收到 JSON,把它转换成 JS 对象,然后在页面上显示出来。
一句话总结:
你用 JavaScript 来写逻辑(怎么动),用 JSON 来存配置和数据(是什么)。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)