0Pricing
Python Academy · 课时

JSON 编码与解码

使用 json.loads、json.dumps 和 json.load/dump 进行 JSON 输入输出。

JSON 编码与解码 是 CoddyKit 上的免费 Python Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Python Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Python Academy 课程共包含 4 节课。

简介

Python 的 json 模块可以使用简单且一致的函数,在 Python 对象与 JSON 字符串或文件之间进行转换。

json.dumps()

json.dumps(obj) 会将 Python 对象序列化为 JSON 字符串。indent=2 会以易读格式打印结果。
import json
d = {'name': 'Alice', 'age': 30, 'active': True}
print(json.dumps(d, indent=2))

json.loads()

json.loads(s) 会将 JSON 字符串解析为 Python 对象。JSON 对象会变成字典,数组会变成列表。
import json
s = '{"name": "Alice", "scores": [90, 85]}'
data = json.loads(s)
print(type(data), data['name'])

将 json.dump() 写入文件

json.dump(obj, file_object) 会直接将对象序列化到文件中。无需先保存字符串。
import json, tempfile, os
tmp = tempfile.mktemp(suffix='.json')
with open(tmp, 'w') as f:
    json.dump({'x': 1}, f, indent=2)
print(open(tmp).read())
os.unlink(tmp)

从文件读取 json.load()

json.load(file_object) 会直接从打开的文件对象中解析 JSON。
import json, io
buf = io.StringIO('{"key": "value"}')
data = json.load(buf)
print(data)

JSON 类型映射

JSON 对象→字典。数组→列表。字符串→str。数字→int/float。true/false→True/False。null→None。
import json
s = '[1, "two", true, null, {"a": 3.14}]'
print(json.loads(s))

不可序列化的类型

datetime、set 和 bytes 无法进行 JSON 序列化。请提供一个 default= 函数或继承 JSONEncoder。
import json
from datetime import datetime
def default(obj):
    if isinstance(obj, datetime):
        return obj.isoformat()
    raise TypeError(f'{type(obj)} not serializable')
print(json.dumps({'ts': datetime.now()}, default=default))

sort_keys 和 separators

sort_keys=True 会对字典键排序。separators=(',', ':') 会移除空白,以生成紧凑的输出。
import json
d = {'z': 3, 'a': 1, 'm': 2}
print(json.dumps(d, sort_keys=True, separators=(',', ':')))

美化打印

json.dumps(obj, indent=4, ensure_ascii=False) 会生成易于阅读且保留 Unicode 的 JSON。
import json
d = {'name': 'Mehmet', 'city': 'Istanbul'}
print(json.dumps(d, indent=4, ensure_ascii=False))

JSONDecodeError

json.loads(invalid) 会引发 json.JSONDecodeError。解析用户输入时,请始终使用 try/except 进行包装。
import json
try:
    json.loads('{bad json}')
except json.JSONDecodeError as e:
    print(f'Parse error: {e}')

更新 JSON 文件

读取 → 修改 → 写回:这是更新 JSON 配置文件的标准模式。
import json, io
buf = io.StringIO('{"count": 5}')
data = json.load(buf)
data['count'] += 1
print(json.dumps(data))

快速检查

哪个函数会将 JSON 字符串解析为 Python 对象?

总结

字符串使用 json.dumps/loads,文件使用 json.dump/load。类型映射:对象→字典,数组→列表,null→None。通过 default= 函数实现自定义序列化。

继续学习

请继续努力!进入下一课。

常见问题解答

「JSON 编码与解码」课时是免费的吗?

是的 — 「JSON 编码与解码」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Python Academy 课程的其余内容,请升级到 CoddyKit PRO。 Python Academy 课程共包含 4 节课。

「JSON 编码与解码」这节课中我会学到什么?

使用 json.loads、json.dumps 和 json.load/dump 进行 JSON 输入输出。 你通过在浏览器中直接运行的动手代码来练习 Python Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Python Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Python Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「JSON 编码与解码」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Python Academy 课中编写并运行代码吗?

能。每节 Python Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. JSON 编码与解码
  2. 处理嵌套 JSON 结构
  3. 使用 csv.reader 读取 CSV
  4. 使用 csv.DictWriter 写入 CSV
← 返回 Python Academy