Files

61 lines
2.4 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 第5-4课练习:JSON数据交换
#
# 本文件只提供题目、预期结果、自查清单和验收标准,不包含参考答案或代码骨架。
# 第一部分:创建并序列化Python对象
# 1. 创建一个图书字典,包含编号、书名、作者、价格、是否上架、标签和备注。
# 2. 值应覆盖字符串、数字、布尔值、列表和None。
# 3. 使用json.dumps()转换为JSON文本。
# 4. 要求中文直接显示,并使用两个空格缩进。
# 5. 输出转换后的JSON文本。
# 第二部分:反序列化请求体
# 1. 准备一段新增图书的合法JSON字符串。
# 2. 使用json.loads()转换为Python字典。
# 3. 分别输出书名、作者和价格。
# 4. 输出转换后对象的类型,确认它是dict而不是str。
# 第三部分:处理错误JSON
# 1. 依次测试属性名使用单引号、最后一项带逗号、缺少右花括号三种错误。
# 2. 捕获json.JSONDecodeError。
# 3. 为使用者输出简洁中文提示,不直接把程序终止在英文堆栈处。
# 4. 在注释中记录每段JSON为什么无效。
# 第四部分:观察HTTP中的JSON
# 1. 用多行字符串写出一份POST /books请求报文。
# 2. 请求头必须包含Content-Type: application/json; charset=utf-8。
# 3. 请求体包含title与price。
# 4. 再写出一份状态码为201的JSON响应报文。
# 5. 在注释中标出请求体、响应体与Content-Type分别位于哪里。
# 预期关键输出:
# 1. 序列化结果中的中文可以直接阅读;
# 2. JSON中的true、false和null使用小写;
# 3. 反序列化后的对象类型为dict;
# 4. 合法请求能够输出书名、作者和价格;
# 5. 三段无效JSON都得到中文错误提示。
# 自查清单:
# 1. 是否导入Python标准库json?
# 2. 是否使用json.dumps()而不是str(dict)?
# 3. JSON文本中的属性名和字符串是否使用双引号?
# 4. 是否理解True与true、None与null的区别?
# 5. 是否捕获了json.JSONDecodeError?
# 6. 是否没有直接序列化Decimal、datetime或自定义对象?
# 7. HTTP请求与响应是否正确声明Content-Type?
# 最终验收标准:
# 1. practice.py通过语法检查并可独立运行;
# 2. Python对象能够转换为格式化中文JSON;
# 3. 合法JSON能够转换为Python字典;
# 4. 三类格式错误都能安全处理;
# 5. 能解释Python对象、JSON文本和网络字节的区别;
# 6. 能指出HTTP报文中的JSON正文和Content-Type。