You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取JSON文件时json.load()与read()方法有什么区别?

Python中json.load()与文件read()读取JSON文件的区别

两种方式得到的结果本质完全不同,输出看起来相似只是因为Python打印时会自动把不同类型的内容转为字符串展示:

  • 本质类型不同
    json.load(f) 会直接将JSON文件的内容反序列化为Python原生数据类型,你的测试用例中得到的是list类型的数组,可以直接做增删改查、下标取值等列表操作:
    # json.load的结果可直接操作
    print(type(characters))  # 输出 <class 'list'>
    print(characters[0]) # 直接输出 'Robin Hood'
    
    f.read() 只是将文件内容按普通文本读取,得到的是字符串类型,哪怕内容符合JSON格式也不能直接当做JSON结构操作。你测试输出里的引号差异也能印证这一点:json.load输出的单引号是Python列表打印的默认格式,read输出的双引号是JSON文本本身的内容,属于字符串的一部分:
    # read的结果只是普通字符串
    print(type(characters))  # 输出 <class 'str'>
    print(characters[0]) # 输出字符串第一个字符 '[',而非列表第一个元素
    
  • 使用成本不同
    json.load 内部封装了完整的JSON解析逻辑,会自动处理转义字符、完成类型映射:比如把JSON的null转成Python的None、true/false转成True/False、JSON对象转成Python字典,读取完成即可直接使用数据。
    如果你用read读取JSON文本,想要正常使用还需要额外调用json.loads()做反序列化,多了冗余步骤:
    # read后需要额外转换才能得到可用的Python对象
    with open(filename) as f:
        content_str = f.read()
        characters = json.loads(content_str)
    
  • 容错性不同
    json.load 读取时如果文件内容不符合JSON规范,会直接抛出明确的JSON解析错误,方便定位问题;直接用read不会校验JSON格式,只有后续手动解析时才会报错,问题定位成本更高。

内容的提问来源于stack exchange,提问作者Zy Taga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 04:45:03