LyricsX桌面歌词插件:如何在Mac上实现完美的音乐歌词体验
2026/1/21 8:55:42
| Python 类型 | JSON 类型 | 注意点 |
|---|---|---|
| dict | object | JSON 键必须是字符串,Python 字典键可多样 |
| list/tuple | array | 元组转 JSON 会变成数组,转回是列表 |
| str | string | JSON 字符串必须用双引号,Python 可单 / 双 |
| int/float | number | 无区别 |
| True/False | true/false | 大小写差异,JSON 是小写 |
| None | null | 关键字不同 |
(每个用法配「代码 + 注释 + 输入输出」,新手能直接复制运行)
import json # 原始Python数据 data = { "name": "张三", "age": 25, "is_student": True, "hobbies": ["编程", "看电影"], "score": None } # 基础序列化 json_str = json.dumps(data) print("基础序列化:", json_str) # 输出:{"name": "\u5f20\u4e09", "age": 25, "is_student": true, "hobbies": ["\u7f16\u7a0b", "\u770b\u7535\u5f71"], "score": null} # 优化:解决中文乱码+格式化输出(重点!) json_str_optimize = json.dumps(data, ensure_ascii=False, indent=4) print("优化后:", json_str_optimize) # 输出: # { # "name": "张三", # "age": 25, # "is_student": true, # "hobbies": [ # "编程", # "看电影" # ], # "score": null # }# 接上面的json_str_optimize python_data = json.loads(json_str_optimize) print("反序列化后类型:", type(python_data)) # <class 'dict'> print("获取姓名:", python_data["name"]) # 张三 print("获取第一个爱好:", python_data["hobbies"][0]) # 编程# 写入JSON文件(解决中文乱码+格式化) with open("data.json", "w", encoding="utf-8") as f: json.dump(data, f, ensure_ascii=False, indent=4) # 读取JSON文件 with open("data.json", "r", encoding="utf-8") as f: load_data = json.load(f) print("读取文件后的数据:", load_data) # 输出和原始data一致(新手常踩的坑,附解决方案)
dumps/dump时加ensure_ascii=False,文件操作指定encoding="utf-8"json.tool校验:python -m json.tool 文件名.json# 嵌套JSON数据 nest_data = { "class": "Python入门班", "students": [ {"name": "李四", "score": 90}, {"name": "王五", "score": 85} ] } # 提取所有学生姓名 names = [stu["name"] for stu in nest_data["students"]] print("学生姓名:", names) # ['李四', '王五']null转成 Python 的None,需单独处理。from datetime import datetime class DateTimeEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, datetime): return obj.strftime("%Y-%m-%d %H:%M:%S") return super().default(obj) # 测试 time_data = {"create_time": datetime.now()} json_time = json.dumps(time_data, cls=DateTimeEncoder, ensure_ascii=False) print("时间序列化:", json_time) # 输出:{"create_time": "2026-01-20 15:30:00"}import requests # 调用公开接口 res = requests.get("https://jsonplaceholder.typicode.com/todos/1") # 直接解析JSON响应 res_json = res.json() # 等价于 json.loads(res.text) print("接口数据:", res_json)