爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      你真的会用Python中的JSON吗,超级详细的JSON常用方法讲解,一文搞定JSON!

      首页 知识中心 软件开发 文章详情页

      你真的会用Python中的JSON吗,超级详细的JSON常用方法讲解,一文搞定JSON!

      2024-12-16 08:19:15 阅读次数:21

      json,JSON,Python,字符串,对象

      你真的会用Python中的JSON吗,超级详细的JSON常用方法讲解,一文搞定JSON!

      Python中JSON的常用方法

      方法名称

      描述

      json.loads()

      将JSON格式的字符串解析成Python对象(如字典或列表)

      json.dumps()

      将Python对象(如字典或列表)转换成JSON格式的字符串

      json.load()

      从文件中读取JSON格式的数据,并解析成Python对象

      json.dump()

      将Python对象转换成JSON格式的数据,并写入文件

      json.JSONDecoder()

      创建一个JSON解码器对象,用于解析JSON字符串(通常直接使用json.loads()更常见)

      json.JSONEncoder()

      创建一个JSON编码器对象,用于将Python对象转换成JSON字符串(通常直接使用json.dumps()更常见)

      json.JSONDecodeError

      异常类,用于处理JSON解码时发生的错误

      json.loads()

      json.loads() 是Python标准库 json 模块中的一个函数,用于将JSON格式的字符串解析(解码)成Python对象。这个过程是反序列化的一部分,即将数据从一种格式(在这个情况下是JSON字符串)转换成另一种格式(在这个情况下是Python的数据结构,如字典或列表)。

      参数

      • s (str): 要解码的JSON字符串。
      • *, **kwargs: 其他可选参数,用于指定解码行为,如 object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, json_loads 等。这些参数允许用户自定义解码过程,例如将JSON对象转换成特定的Python对象类型。

      返回值

      Python对象:通常是字典(对应于JSON对象)或列表(对应于JSON数组)。如果JSON字符串表示的是其他类型(如字符串、数字、布尔值、null),则返回相应的Python类型。

      示例

      import json  
        
      # 一个简单的JSON字符串  
      json_str = '{"name": "Alice", "age": 30, "is_student": false}'  
        
      # 使用json.loads()将JSON字符串解析成Python对象  
      python_obj = json.loads(json_str)  
        
      # 打印解析后的Python对象  
      print(python_obj)  # 输出: {'name': 'Alice', 'age': 30, 'is_student': False}  
        
      # 访问解析后的对象属性  
      print(python_obj['name'])  # 输出: Alice  
      print(python_obj['age'])   # 输出: 30  
      print(python_obj['is_student'])  # 输出: False

      注意事项

      • JSON字符串必须使用双引号(")来包围键和字符串值。如果使用单引号('),则会导致解码错误。
      • JSON中的布尔值 true 和 false 会被转换成Python中的 True 和 False。
      • JSON中的 null 会被转换成Python中的 None。
      • 如果JSON字符串格式不正确(例如缺少引号、括号不匹配等),json.loads() 会抛出一个 json.JSONDecodeError 异常。

      json.dumps()

      json.dumps() 是Python标准库 json 模块中的一个函数,用于将Python对象编码(序列化)成JSON格式的字符串。这个过程是序列化的一部分,即将数据从一种格式(在这个情况下是Python的数据结构,如字典或列表)转换成另一种格式(在这个情况下是JSON字符串)。

      参数

      • obj (any): 要编码的Python对象。它通常是字典(对应于JSON对象)或列表(对应于JSON数组),但也可以是其他类型,如字符串、数字、布尔值、None等。
      • skipkeys (bool, optional): 默认为False。如果字典的键不是基本类型(即str, int, float, bool, None),则设置为True可以跳过这些键;否则将引发TypeError。
      • ensure_ascii (bool, optional): 默认为True。如果设置为False,则尝试将非ASCII字符(如中文)输出为\uXXXX形式的Unicode转义字符之外的字符。请注意,这可能会产生不可读的输出在非ASCII平台的print函数中,因为print函数可能会使用系统默认的编码来解码字节字符串。在Python 3.x中,字符串是Unicode的,所以这个选项主要影响字节字符串的输出。
      • check_circular (bool, optional): 默认为True。如果设置为False,则跳过对容器类型的循环引用的检查(这可能会引发OverflowError)。
      • allow_nan (bool, optional): 默认为True。如果设置为False,则序列化过程中会将浮点数中的NaN、Infinity和-Infinity转换为null。
      • sort_keys (bool, optional): 默认为False。如果设置为True,则字典的键会按照键的Unicode码点排序。
      • indent (int or str, optional): 如果指定为整数,则使用指定的缩进级别来美化输出的JSON字符串。如果指定为字符串(如\t),则使用该字符串作为缩进字符。
      • separators (tuple, optional): 一个(item_separator, key_separator)元组,用于指定分隔符。默认为(', ', ‘: ‘)。如果指定为(’,’, ‘:’),则输出的字符串会更紧凑。
      • default (function, optional): 一个函数,用于将不可序列化的对象转换为一个可序列化的表示。默认情况下,不可序列化的对象会引发TypeError。
        *, **kwargs: 其他可选参数,用于进一步定制序列化行为。

      返回值

      str: 编码后的JSON格式的字符串。

      示例

      import json  
        
      # 一个简单的Python对象(字典)  
      python_obj = {'name': 'Alice', 'age': 30, 'is_student': False}  
        
      # 使用json.dumps()将Python对象编码成JSON字符串  
      json_str = json.dumps(python_obj)  
        
      # 打印编码后的JSON字符串  
      print(json_str)  # 输出: '{"name": "Alice", "age": 30, "is_student": false}'  
        
      # 使用indent参数来美化输出  
      pretty_json_str = json.dumps(python_obj, indent=4)  
      print(pretty_json_str)  
      # 输出:  
      # {  
      #     "name": "Alice",  
      #     "age": 30,  
      #     "is_student": false  
      # }

      注意事项

      • 编码后的JSON字符串使用双引号(")来包围键和字符串值。
      • Python中的布尔值 True 和 False 会被转换成JSON中的 true 和 false。
      • Python中的 None 会被转换成JSON中的 null。
      • 如果Python对象包含无法直接转换成JSON的类型(如自定义对象),则可以使用default参数来提供一个自定义的序列化函数。
      • json.dumps() 不会直接写入文件;要将JSON字符串写入文件,请使用json.dump()方法。

      json.load()

      json.load() 是Python标准库 json 模块中的一个函数,用于从文件中读取JSON格式的数据,并将其解析(解码)成Python对象。这个过程是反序列化的一部分,即将数据从一种格式(在这个情况下是JSON文件)转换成另一种格式(在这个情况下是Python的数据结构,如字典或列表)。

      参数

      • fp (file-like object): 一个文件对象,它应该是一个支持.read()方法的对象,并且包含JSON格式的数据。这通常是一个打开的文件,但也可以是任何实现了文件接口的对象。
      • *, **kwargs: 其他可选参数,用于指定解码行为,如 object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, cls 等。这些参数允许用户自定义解码过程,例如将JSON对象转换成特定的Python对象类型。

      返回值

      Python对象:通常是字典(对应于JSON对象)或列表(对应于JSON数组)。如果JSON文件表示的是其他类型(如字符串、数字、布尔值、null),则返回相应的Python类型。

      示例

      import json  
        
      # 假设有一个名为'data.json'的文件,内容如下:  
      # {  
      #     "name": "Alice",  
      #     "age": 30,  
      #     "is_student": false  
      # }  
        
      # 打开JSON文件并读取数据  
      with open('data.json', 'r', encoding='utf-8') as f:  
          python_obj = json.load(f)  
        
      # 打印解析后的Python对象  
      print(python_obj)  # 输出: {'name': 'Alice', 'age': 30, 'is_student': False}  
        
      # 访问解析后的对象属性  
      print(python_obj['name'])  # 输出: Alice

      注意事项

      • 文件应该以读取模式(‘r’)打开,并且通常应该指定文件的编码(如’utf-8’),以确保正确读取文件中的字符。
      • JSON文件中的字符串必须使用双引号(")来包围键和字符串值。
      • 如果JSON文件格式不正确(例如缺少引号、括号不匹配等),json.load() 会抛出一个 json.JSONDecodeError 异常。
      • json.load() 直接从文件中读取并解析JSON数据,而不需要先将文件内容读入一个字符串变量。

      json.dump()

      json.dump() 是Python标准库 json 模块中的一个函数,用于将Python对象编码(序列化)成JSON格式,并将结果写入到一个文件中。这个过程是序列化的一部分,即将数据从一种格式(在这个情况下是Python的数据结构,如字典或列表)转换成另一种格式(在这个情况下是JSON文件)。

      参数

      • obj (any): 要编码的Python对象。它通常是字典(对应于JSON对象)或列表(对应于JSON数组),但也可以是其他类型,如字符串、数字、布尔值、None等。
      • fp (file-like object): 一个文件对象,它应该是一个支持.write()方法的对象,用于写入JSON格式的数据。这通常是一个打开的文件,但也可以是任何实现了文件接口的对象。
      • skipkeys (bool, optional): 默认为False。如果字典的键不是基本类型(即str, int, float, bool, None),则设置为True可以跳过这些键;否则将引发TypeError。
      • ensure_ascii (bool, optional): 默认为True。如果设置为False,则尝试将非ASCII字符(如中文)输出为\uXXXX形式的Unicode转义字符之外的字符。请注意,在写入文件时,这通常不是问题,因为文件可以保存任何字节。但是,如果文件被当作文本文件处理(例如,在某些编辑器或查看器中打开),则可能需要确保文件的编码与ensure_ascii=False时写入的字符相匹配。
      • check_circular (bool, optional): 默认为True。如果设置为False,则跳过对容器类型的循环引用的检查(这可能会引发OverflowError)。
      • allow_nan (bool, optional): 默认为True。如果设置为False,则序列化过程中会将浮点数中的NaN、Infinity和-Infinity转换为null。
      • sort_keys (bool, optional): 默认为False。如果设置为True,则字典的键会按照键的Unicode码点排序后写入文件。
      • indent (int or str, optional): 如果指定为整数,则使用指定的缩进级别来美化输出的JSON。如果指定为字符串(如\t),则使用该字符串作为缩进字符。
      • separators (tuple, optional): 一个(item_separator, key_separator)元组,用于指定分隔符。默认为(', ', ‘: ‘)。如果指定为(’,’, ‘:’),则输出的字符串会更紧凑。
      • default (function, optional): 一个函数,用于将不可序列化的对象转换为一个可序列化的表示。默认情况下,不可序列化的对象会引发TypeError。
        *, **kwargs: 其他可选参数,用于进一步定制序列化行为。

      返回值

      None:json.dump() 不返回任何值,它将编码后的JSON数据直接写入到提供的文件对象中。

      示例

      import json  
        
      # 一个简单的Python对象(字典)  
      python_obj = {'name': 'Alice', 'age': 30, 'is_student': False}  
        
      # 打开一个文件以写入JSON数据  
      with open('output.json', 'w', encoding='utf-8') as f:  
          json.dump(python_obj, f)  
        
      # 现在'output.json'文件包含了编码后的JSON数据

      注意事项

      • 文件应该以写入模式(‘w’、‘a’等)打开,并且通常应该指定文件的编码(如’utf-8’),以确保正确写入文件中的字符。
      • 如果ensure_ascii设置为False,并且文件中包含非ASCII字符,请确保文件的编码与这些字符相匹配,否则在某些环境中可能会出现乱码。
      • json.dump() 直接将Python对象编码成JSON格式并写入文件,而不需要先将数据转换成字符串。
      • 如果提供的文件对象不支持.write()方法,json.dump() 会抛出一个异常。

      json.JSONDecoder 类

      json.JSONDecoder 提供了一个接口来解码JSON字符串。你可以创建一个JSONDecoder实例,然后使用它的.decode()方法来解码JSON数据。

      构造函数

      json.JSONDecoder(object_hook=None, parse_float=None, parse_int=None, parse_constant=None, strict=True, object_pairs_hook=None)
      • object_hook:一个可选的函数,它将对每个解码的字典对象调用。这个函数应该接受一个字典作为参数,并返回另一个对象(通常是自定义的字典子类或其他类型的对象)。
      • parse_float、parse_int:这两个可选的函数分别用于解析JSON中的浮点数和整数。它们将接收一个字符串作为参数,并返回相应的浮点数或整数。
      • parse_constant:一个可选的函数,用于解析JSON中的特殊浮点值(如NaN、Infinity和-Infinity)。这个函数将接收一个字符串作为参数,并返回相应的特殊浮点值。
      • strict:如果设置为False,则解码器将尝试解析非标准的JSON(例如,允许尾随逗号)。默认值为True,表示严格遵循JSON标准。
      • object_pairs_hook:一个可选的函数,类似于object_hook,但它用于处理解码后的有序对列表(即列表中的元素是二元组,而不是字典)。这个函数应该接受一个有序对列表作为参数,并返回另一个对象(例如,一个有序字典)。

      方法

      .decode(s, _w=None): 解码JSON字符串s。_w是一个内部参数,通常不需要用户设置。

      示例

      import json  
        
      # 创建一个JSONDecoder实例  
      decoder = json.JSONDecoder(object_hook=lambda d: {k.upper(): v for k, v in d.items()})  
        
      # JSON字符串  
      json_str = '{"name": "Alice", "age": 25}'  
        
      # 解码JSON字符串  
      decoded_obj = decoder.decode(json_str)  
        
      # 打印解码后的对象  
      print(decoded_obj)  # 输出: {'NAME': 'Alice', 'AGE': 25}

      在这个示例中,我们创建了一个JSONDecoder实例,并通过object_hook参数提供了一个函数,该函数将解码后的字典中的所有键转换为大写。然后,我们使用这个解码器的.decode()方法来解码一个JSON字符串,并打印出解码后的对象。

      注意事项

      • 通常情况下,直接使用json.loads()函数就足够了,因为它提供了与JSONDecoder相同的解码功能,但使用起来更简单。
      • 如果你需要处理大量的JSON数据或需要重用解码器对象,那么使用JSONDecoder可能会更有效。
      • 在使用object_hook、parse_float、parse_int、parse_constant和object_pairs_hook参数时,请确保提供的函数能够正确处理输入并返回预期的输出。

      json.JSONEncoder 类

      在Python的json模块中,json.JSONEncoder是一个类,它提供了将Python对象编码(即序列化)为JSON字符串的接口。虽然json.dumps()函数是序列化Python对象为JSON字符串的常用方法,但在需要更细粒度的控制或想要重用编码器对象的情况下,可以使用json.JSONEncoder。
      json.JSONEncoder类允许你创建一个编码器实例,并通过其.encode()方法将Python对象转换为JSON字符串。

      构造函数

      json.JSONEncoder(skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, default=None)
      • skipkeys:如果为True,则跳过字典中无法编码为JSON的键(通常是那些其str()表示形式不是字符串的键)。默认值为False。
      • ensure_ascii:如果为True,则所有非ASCII字符都将转义为\uXXXX形式的Unicode转义序列。默认值为True。如果为False,则尝试直接使用Unicode字符(这可能需要你的环境支持显示这些字符)。
      • check_circular:如果为True,则检测并引发TypeError以阻止循环引用(例如,字典直接或间接地引用自己)。默认值为True。
      • allow_nan:如果为True,则允许将NaN、Infinity和-Infinity等浮点值编码为它们的JSON等价物(null、“Infinity"和”-Infinity")。默认值为True。
      • sort_keys:如果为True,则对字典的键进行排序(按照Unicode码点顺序)。默认值为False。
      • indent:一个用于美化输出的整数或字符串。如果是一个整数,则表示每个级别的缩进量(以空格为单位)。如果是一个字符串(如\t),则使用该字符串作为缩进字符。默认值为None,表示不添加任何缩进。
      • separators:一个(item_separator, key_separator)元组,用于指定项之间和键-值对之间的分隔符。默认值为(', ', ': '),表示使用逗号和冒号作为分隔符。
      • default:一个用于处理无法直接编码为JSON的对象的函数。这个函数应该接受一个无法编码的对象,并返回一个可以编码的对象(例如,一个基本数据类型或另一个可以编码的对象)。如果未提供此函数,则在遇到无法编码的对象时,将引发TypeError。

      方法

      .encode(o): 将Python对象o编码为JSON字符串。

      示例

      import json  
        
      # 创建一个JSONEncoder实例,配置美化输出  
      encoder = json.JSONEncoder(indent=4, sort_keys=True)  
        
      # 一个Python对象(字典)  
      python_obj = {  
          'name': 'Alice',  
          'age': 25,  
          'is_student': False,  
          'courses': ['Math', 'Science', 'Art'],  
          'address': {  
              'street': '123 Main St',  
              'city': 'Wonderland'  
          }  
      }  
        
      # 将Python对象编码为JSON字符串  
      json_str = encoder.encode(python_obj)  
        
      # 打印JSON字符串  
      print(json_str)

      在这个示例中,我们创建了一个JSONEncoder实例,并通过indent和sort_keys参数配置了美化输出。然后,我们使用这个编码器的.encode()方法将一个Python对象(字典)编码为JSON字符串,并打印出来。

      注意事项

      • 通常情况下,直接使用json.dumps()函数就足够了,因为它提供了与JSONEncoder相同的编码功能,但使用起来更简单。
      • 如果你需要处理大量的Python对象或需要重用编码器对象,那么使用JSONEncoder可能会更有效。
      • 在使用default参数时,请确保提供的函数能够正确处理无法编码的对象,并返回一个可以编码的对象。

      json.JSONDecodeError 类

      在Python的json模块中,json.JSONDecodeError是一个异常类,用于在解码(反序列化)JSON数据时报告错误。这个异常是在尝试将JSON格式的字符串转换为Python对象时,如果JSON数据格式不正确或无法解析,就会引发此异常。
      json.JSONDecodeError是ValueError的一个子类,因此它继承了ValueError的所有属性和方法。此外,JSONDecodeError还提供了一些额外的属性,以帮助开发者诊断和修复解码过程中的问题。

      属性

      • msg: 一个字符串,描述了错误的性质。这通常是一个简短的错误消息,如"Expecting value"或"Extra data"。
      • doc: 引发错误的JSON字符串(或其一部分)。这可以帮助你查看导致错误的具体JSON数据。
      • pos: 一个整数,表示错误发生的位置(在doc字符串中的索引)。这可以帮助你定位到JSON字符串中出错的具体位置。
      • lineno: 一个整数,表示错误发生的行号(如果JSON数据是分行的)。注意,这个属性可能不是所有Python版本或json模块实现中都可用。
      • colno: 一个整数,表示错误发生的列号(同样,如果JSON数据是分行的)。这个属性也可能不是所有实现中都可用。

      示例

      import json  
        
      # 一个格式不正确的JSON字符串  
      invalid_json = '{"name": "Alice", "age": 25, "is_student": '  
        
      try:  
          # 尝试解码JSON字符串  
          data = json.loads(invalid_json)  
      except json.JSONDecodeError as e:  
          # 捕获JSONDecodeError异常并打印错误信息  
          print(f"JSONDecodeError occurred: {e.msg}")  
          print(f"Error position: {e.pos} in document: {e.doc[:e.pos]}...")  
          # 如果可用,打印行号和列号  
          if hasattr(e, 'lineno'):  
              print(f"Error line number: {e.lineno}, column number: {e.colno}")

      在这个示例中,我们尝试解码一个格式不正确的JSON字符串(缺少一个引号来闭合is_student的值)。由于JSON数据格式不正确,json.loads()函数会引发json.JSONDecodeError异常。我们捕获了这个异常,并打印了错误消息、错误位置以及(如果可用的话)行号和列号。

      注意事项

      • 当处理来自外部源(如网络API、文件或用户输入)的JSON数据时,始终应该准备好捕获json.JSONDecodeError异常。
      • lineno和colno属性可能不是所有Python版本或json模块实现中都可用。如果你的环境中这些属性不可用,你可能需要依赖pos属性和错误消息来定位问题。
      • 在调试时,查看doc属性中的JSON数据可以帮助你理解为什么解码失败。但是,请注意,如果JSON数据非常大,打印整个字符串可能会占用大量空间或导致性能问题。在这种情况下,你可能只想打印出错位置附近的一部分数据。
      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.51cto.com/u_17010021/12489449,作者:长风清留杨,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:SpringCloud-搭建RabbitMQ消息队列

      下一篇:Python高效办公自动化项目,让你办公效率提高几百倍!赶紧来试试这个项目吧!

      相关文章

      2025-05-19 09:04:44

      js小题2:构造函数介绍与普通函数对比

      js小题2:构造函数介绍与普通函数对比

      2025-05-19 09:04:44
      new , 关键字 , 函数 , 对象 , 构造函数
      2025-05-19 09:04:22

      外设驱动库开发笔记54:外设库驱动设计改进的思考

      外设驱动库开发笔记54:外设库驱动设计改进的思考

      2025-05-19 09:04:22
      使用 , 函数 , 初始化 , 定义 , 对象
      2025-05-19 09:04:22

      外设驱动库开发笔记46:MAX31855热偶变送器驱动

      外设驱动库开发笔记46:MAX31855热偶变送器驱动

      2025-05-19 09:04:22
      对象 , 温度
      2025-05-19 09:04:14

      C语言字符函数和字符串函数--(超全超详细)

      C语言字符函数和字符串函数--(超全超详细)

      2025-05-19 09:04:14
      函数 , 字符 , 字符串
      2025-05-16 09:15:24

      jQuery遍历对象、数组、集合

      jQuery遍历对象、数组、集合

      2025-05-16 09:15:24
      jQuery , 对象 , 数组 , 遍历 , 集合
      2025-05-14 10:33:31

      计算机初级选手的成长历程——操作符详解(2)

      计算机初级选手的成长历程——操作符详解(2)

      2025-05-14 10:33:31
      对象 , 操作 , 操作符 , 表达式 , 运算 , 逗号 , 逻辑
      2025-05-14 10:33:31

      计算机小白的成长历程——习题演练(函数篇)

      计算机小白的成长历程——习题演练(函数篇)

      2025-05-14 10:33:31
      函数 , 字符串 , 数组 , 知识点 , 编写 , 迭代 , 递归
      2025-05-14 10:33:25

      webpack5基础--01_基本使用

      webpack5基础--01_基本使用

      2025-05-14 10:33:25
      json , main , package , Webpack , 打包 , 文件 , 编译
      2025-05-14 10:33:16

      30天拿下Rust之切片

      在Rust中,切片是一种非常重要的引用类型。它允许你安全地引用一段连续内存中的数据,而不需要拥有这些数据的所有权。切片不包含分配的内存空间,它仅仅是一个指向数据开始位置和长度的数据结构。

      2025-05-14 10:33:16
      amp , end , 切片 , 字符串 , 引用 , 索引 , 迭代
      2025-05-14 10:33:16

      30天拿下Python之使用Json

      Json的英文全称为JavaScript Object Notation,中文为JavaScript对象表示法,是一种存储和交换文本信息的语法,类似XML。Json作为轻量级的文本数据交换格式,比XML更小、更快,更易解析,也更易于阅读和编写。

      2025-05-14 10:33:16
      json , Json , Python , 字符串 , 对象 , 序列化 , 转换
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5249519

      查看更多

      最新文章

      外设驱动库开发笔记54:外设库驱动设计改进的思考

      2025-05-19 09:04:22

      外设驱动库开发笔记46:MAX31855热偶变送器驱动

      2025-05-19 09:04:22

      C语言字符函数和字符串函数--(超全超详细)

      2025-05-19 09:04:14

      30天拿下Python之使用Json

      2025-05-14 10:33:16

      30天拿下Python之文件操作

      2025-05-14 10:33:16

      30天拿下Python之迭代器和生成器

      2025-05-14 10:07:38

      查看更多

      热门文章

      MySQL 5.7 JSON函数学习

      2023-04-27 08:00:00

      Python标准输入输出

      2023-04-18 14:15:05

      Python高级变量类型

      2024-09-24 06:30:08

      mysql列存储引擎-字符串属性列-列压缩测试

      2023-04-23 09:34:23

      Python:matplotlib分组Bar柱状图

      2024-09-25 10:15:01

      刷题——Python篇(2)类型转换

      2023-02-13 07:58:38

      查看更多

      热门标签

      java Java python 编程开发 代码 开发语言 算法 线程 Python html 数组 C++ 元素 javascript c++
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      查看更多

      随机文章

      【C++11】make_shared函数|std::make_unique

      Python 原生Socket实现端口扫描

      C++ 实现Python String 中的strip,lstrip,rstrip函数

      【持续更新,建议收藏】Python必知必会的知识点,极大提升开发效率

      报错SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data

      Java反射学习(1)(Java的“反射“机制、Class类对象的实例化方式)

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号