| 进度条:学习第 37 天(37/191)|当前完成度:约 30% |
📎 今日速览:主学 JSON(6 种值类型 → 对象数组嵌套 → 各语言转换 → 7 个报错坑),次学 EXE(PE 结构 + pyinstaller 打包),外加笔记自查纠错 6 处 ← 先看这段
〇、今日投入 & 产出(量化)
| 维度 | 内容 | 量化 |
|---|---|---|
| 投入-时间 | JSON/EXE 视频学习 + 手写笔记 5 页 + 笔记补丁核对 | 约 5 小时 |
| 投入-外部输入 | JSON/EXE 视频教程、手写笔记补丁资料(纠错+补充) | 2 类 |
| 产出-代码/数据 | 6 种值类型梳理、4 个转换函数、7 个报错坑、PE 5 大节 | 1 套笔记 |
| 产出-文档/博客 | 本篇 Day 37 学习笔记(含纠错 6 处 + 补丁全量) | 1 篇 |
一、今日任务(完成+收获)
1.1 今日任务原文
主学 JSON 分析,次学 EXE 文件形式,并用手写笔记 + 补丁合并出正确版本。

📷 图1:JSON 手写学习笔记(10.11,3 页)+ 今日任务清单
1.2 完成情况
| 任务项 | 计划 | 实际 | 状态 |
|---|---|---|---|
| JSON 基础:来源、与 XML 区别、应用场景 | 理清术语 | 笔记 3 页,术语全理清 | ✅ 完成 |
| JSON 语法:6 种值类型 + 对象/数组嵌套 | 掌握 | 掌握,含嵌套完整示例 | ✅ 完成 |
| EXE 文件:PE 结构 + pyinstaller 打包 | 掌握 | 掌握,打包命令已验证拼写 | ✅ 完成 |
| 笔记自查纠错 | 对照资料 | 纠出并更正 6 处 | ✅ 完成 |
1.3 今日收获 & 学到的知识点
① JSON 是什么 :一种轻量级文本数据格式 ,来源于 JavaScript 的对象语法,但实际上独立于任何语言,本质就是一条字符串。
- 大白话:JSON 不是框架也不是工具,只是"一套写字规矩",能简单直观地把树状结构数据装进一条字符串里。
② 6 种值类型 :字符串(必须双引号)、数字、布尔、null 这 4 种常规类型 + 对象 {}、数组 [] 这 2 种可内嵌类型;关键必须是字符串,最后一项后面不能加逗号,值类型无需统一。
**③ JSON vs XML(对比表)**
| 对比项 | JSON | XML |
|---|---|---|
| 对谁友好 | 对人友好 | 对机器友好 |
| 适合场景 | 数据量不大、结构不复杂(接口参数、返回结果、配置文件、Elastic Search) | 数据量大、结构复杂 |
| 互相转换 | 大部分情况可互相转换 | 大部分情况可互相转换 |
**④ Python 端转换方法(对照 JavaScript)**
| JavaScript | Python | 作用 |
|---|---|---|
JSON.parse(text) |
json.loads(text) |
字符串 → 对象(s=字符串) |
JSON.stringify(obj) |
json.dumps(obj) |
对象 → 字符串(s=字符串) |
| (无) | json.load(f) |
读 .json 文件并解析 |
| (无) | json.dump(obj, f) |
把对象写入 .json 文件 |
- 记忆法:Python 里带 s 的是处理【字符串 string】 ,不带 s 的是处理【文件 file】。
**⑤ JSON 常见报错坑(解析 API 返回时 90% 的错误来源)**
-
键和字符串值必须用双引号,单引号非法:
{'a':1}❌ →{"a":1}✅ -
JSON 不支持注释,配置文件想写注释要改用 YAML / TOML
-
最后一个键值对后面不能有逗号:
{"a":1,}❌ -
字符串内的双引号要转义:
"他说 \"你好\""✅ -
数字不能有前导零:
01❌;NaN/Infinity不是标准 JSON -
空值是小写
null(Python 里对应 None),True/False在 JSON 里必须小写 -
嵌套完整示例(对象套数组、数组套对象):
json
{
"店铺": "老王炒菜",
"营业": true,
"评分": 4.8,
"菜单": [
{"菜名": "番茄炒蛋", "价格": 12, "辣度": null},
{"菜名": "辣椒炒肉", "价格": 28, "辣度": "高"}
]
}
⑥ EXE / PE 文件 :exe 和 dll 都是 PE(Portable Executable,可移植的可执行文件) ,由 DOS 头、PE 头、节表、节 组成;常见节:.text 指令代码、.data 初始化数据、.idata 导入表、.edata 导出表、.rsrc 资源(图标/光标/位图)。
- 大白话:所有文件本质都是一堆 0 和 1,由不同软件解释才有了"意义"------软件自己也是个 exe,也依然是数据。
⑦ pyinstaller 打包 :pip install pyinstaller 安装 → pyinstaller -F 文件名.py 打包 → dist 文件夹里生成 exe。常用参数卡:
-
-F打成单个 exe 文件(最常用) -
-w运行时不弹黑色控制台窗口(做界面程序时用) -
-i 图标.ico自定义程序图标 -
-D打成文件夹(默认模式,启动更快) -
注意:打包后的 exe 可能被杀毒软件误报,属正常现象。
⑧ 从源码到 exe 四步流程(一条线背下来):
源代码(.c) → 预处理/编译 → 汇编(asm/obj) → 链接器(Linker) → 可执行文件(exe)
-
冷知识:文件头
"MZ"是程序员 Mark Zbikowski 的名字缩写,记人名更好记。 -
验证小实验:用十六进制编辑器打开任意 exe,前两个字母应是
"MZ",往下翻能看到"This program cannot be run in DOS mode"。 -
现代 Windows 是 NT 内核,不是 DOS;exe 开头那段只是残留的 DOS 兼容程序(DOS stub),作用是万一在 DOS 下运行时打印提示语,属于历史遗留。

📷 图2:EXE 打包实操(10.12)+ PE 结构笔记截图
二、卡点分两类(已解决 / 未解决)
✅ 今日已解决
2.1 笔记自查纠错 6 处怎么解开的
-
什么时候出现:手写笔记混入 6 个错,是记笔记时凭印象写、没对照权威资料留下的。
-
我的理解:把"近似概念"当成了真------比如 HTML/XML 谁的爹是谁、Java 对 JSON 到底是不是天生支持。
-
解决办法:对照资料逐条核实,6 处全部改为正确:
-
HTML 不是 基于 XML 的。HTML 和 XML 是兄弟关系(都源自 SGML),基于 XML 的是 XHTML。
-
Java 对 JSON 是【非原生】支持,需引入 Gson / FastJson 等库。
-
安装命令拼写:
pip install pyinstaller -
打包命令:
pyinstaller -F 文件名.py -
PE 资源节名是
.rsrc(不是.ysrc)。 -
现代 Windows 是 NT 内核,不是 DOS。exe 开头只是残留一段 DOS 兼容程序(DOS stub),作用是万一在 DOS 下运行时打印提示语,属于历史遗留。
-
-
✅ 验证结果:逐条核对完毕,6 处已更正,笔记补丁已并入本篇,不再有错写法流入博客。

📷 图3:纠错 6 处对照清单(笔记补丁原文)
2.2 EXE 从"黑盒"到"也是数据"的认知怎么解开的
-
什么时候出现:学 PE 结构前,一直以为 exe 是"神秘程序",碰不得。
-
我的理解 :拆开看,exe 只是 DOS 头 + PE 头 + 节表 + 节,和 txt 一样是 0/1 序列。
-
解决办法 :用"所有文件本质都是 0 和 1,区别只在谁来解释"这句话重新框定。
-
✅ 验证结果:现在能用自己的话讲清"软件本体也是数据",不再把它当黑盒。
❓ 还没搞懂(带到明天)
| 没吃透的点 | 卡在哪 | 准备什么时候啃 |
|---|---|---|
| Resource Hacker 修改 exe 资源实操 | 删除资源报错后"替换相同格式资源"的具体操作还没亲手跑过 | 抽空完成 |
💡 今天没踩硬坑,这条是"最拿不准、想验证但还没验证"的点。
三、小结和下一步计划
3.1 今日小结
-
JSON 教会我"数据有格式 "------一套写字规矩就能把树状结构 装进一条字符串
-
EXE 教会我"软件本体也是数据"------拆开看全是 0 和 1 加一个文件头。
-
两课合一句:底层全是数据,区别只在谁来解释。
3.2 ✨ 高光时刻 / 亮点
从自己的手写笔记里纠出 6 处错误------最有意思的是
"MZ"文件头竟是程序员 Mark Zbikowski 的名字缩写,而"Windows 是 DOS 系统"这个流传已久的说法被证实是错的(NT 内核,DOS 程序只是残留)。为什么算高光:第一次不靠别人提醒,自己把"以为对的常识"推翻重来,笔记可信度直线上升。
3.3 下一步计划
| 任务 | 验收标准 |
|---|---|
| 补 Resource Hacker 实操 | 亲手删换一次 exe 资源,跑通不报错 |
| JSON 转换函数上手 | 用 Python json.loads/dumps 各跑一遍嵌套示例 |
📌 3 行速记
· 做了:主学 JSON(6 种值类型/转换/7 报错坑)+ 次学 EXE(PE 结构/pyinstaller),笔记自查纠错 6 处
· 学会:JSON 是"一套写字规矩";软件本体也是 0/1 数据;MZ 是程序员名字缩写
· 卡住:Resource Hacker 改 exe 资源实操未亲手跑