Python3入门之JSON数据解析全面学习教程

作者:

文章目录
  • Python作为一门简洁、易读、功能强大的编程语言,其基础语法是入门学习的核心。掌握好基础语法,能为后续的编程实践打下坚实的基础。本文将全面讲解Python3的基础语法知识,适合编程初学者系统学习。Python以其简洁优雅的语法和强大的通用性,成为当今最受欢迎的编程语言。本专栏旨在系统性地带你从零基础入门到精通Python核心。无论你是零基础小白还是希望进阶的专业开发者,都将通过清晰的讲解、丰富的实例和实战项目,逐步掌握语法基础、核心数据结构、函数与模块、面向对象编程、文件处理、主流库应用(如数据分析、Web开发、自动化)以及面向对象高级特性,最终具备独立开发能力和解决复杂问题的思维,高效应对数据分析、人工智能、Web应用、自动化脚本等广泛领域的实际需求。 在当今的数据交换场景中,JSON(JavaScript Object Notation)凭借其轻量级、易读易写的特性,成为了前后端交互、API数据传输的主流格式。而Python作为数据分析和后端开发的热门语言,内置了json模块来高效处理JSON数据。本文将从JSON基础概念入手,详细讲解Python3中json模块的核心函数用法,结合实例帮助你快速掌握JSON数据的编解码技巧。
  • JSON是一种基于文本的轻量级数据交换格式,它源于JavaScript,但如今已成为跨语言、跨平台的数据交换标准。相比于XML,JSON语法更简洁、解析速度更快,非常适合传输结构化数据(如用户信息、接口返回结果等)。 如果你对JSON语法尚不熟悉,可以先了解其核心数据类型: 对象(对应Python的字典):用{key: value}表示,键值对之间用逗号分隔 数组(对应Python的列表):用[value1, value2, …]表示 基本类型:字符串(双引号包裹)、数字(整数/浮点数)、布尔值(true/false)、空值(null)
  • Python3的标准库json模块提供了4个核心函数,分别用于字符串级别的编解码和文件级别的编解码,覆盖了绝大多数JSON处理场景。 函数用途 函数名 核心作用 Python数据编码为JSON字符串 json.dumps() 将Python原生数据类型转换为JSON格式字符串 JSON字符串解码为Python数据 json.loads() 将JSON格式字符串转换为Python原生数据类型 Python数据写入JSON文件 json.dump() 将Python数据直接写入文件(JSON格式) 从JSON文件读取Python数据 json.load() 从JSON文件中读取数据并转换为Python类型
  • 在编解码过程中,Python原生类型与JSON类型会自动转换,理解对应关系是避免数据异常的关键。
  • 理论结合实践才能快速掌握,下面通过3个递进的案例,演示json模块的核心用法。
  • 数据类型不匹配错误:若Python数据中包含json模块不支持的类型(如datetime对象、自定义类实例),直接编码会报错。解决方案:自定义default参数(如json.dumps(data, default=str)将不支持的类型转为字符串)。 文件编码问题:写入/读取JSON文件时,务必指定encoding='utf-8',否则中文等非ASCII字符可能出现乱码。 dumps与dump、loads与load的区别: 带s的函数(dumps/loads):操作字符串,适用于内存中的数据处理(如API交互)。 不带s的函数(dump/load):操作文件对象,适用于文件持久化存储。 到此这篇关于Python3入门之JSON数据解析全面学习教程的文章就介绍到这了,更多相关Python3 JSON数据解析内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: Python处理JSON文件的完整流程(读取、解析、修改和保存) Python处理JSON的四大函数全解析(load/loads/dump/dumps) 使用Python解析PPT文件并生成JSON结构详解 Python实现解析与生成JSON数据 如何使用Python JSON解析和转换数据 深入解析Python中的JSON比较
  • 目录
    • 前言
    • 一、JSON基础:为什么它如此重要
    • 二、Python3json模块核心函数
    • 三、关键知识点:Python与JSON类型对应关系
      • 1. Python编码为JSON的类型映射
      • 2. JSON解码为Python的类型映射
    • 四、实战案例:从字符串到文件的完整操作
      • 案例1:Python数据编码为JSON字符串(json.dumps())
      • 案例2:JSON字符串解码为Python数据(json.loads())
      • 案例3:Python数据与JSON文件的交互(json.dump()/json.load())
    • 五、常见问题与注意事项

      Python作为一门简洁、易读、功能强大的编程语言,其基础语法是入门学习的核心。掌握好基础语法,能为后续的编程实践打下坚实的基础。本文将全面讲解Python3的基础语法知识,适合编程初学者系统学习。Python以其简洁优雅的语法和强大的通用性,成为当今最受欢迎的编程语言。本专栏旨在系统性地带你从零基础入门到精通Python核心。无论你是零基础小白还是希望进阶的专业开发者,都将通过清晰的讲解、丰富的实例和实战项目,逐步掌握语法基础、核心数据结构、函数与模块、面向对象编程、文件处理、主流库应用(如数据分析、Web开发、自动化)以及面向对象高级特性,最终具备独立开发能力和解决复杂问题的思维,高效应对数据分析、人工智能、Web应用、自动化脚本等广泛领域的实际需求。

      在当今的数据交换场景中,JSON(JavaScript Object Notation)凭借其轻量级、易读易写的特性,成为了前后端交互、API数据传输的主流格式。而Python作为数据分析和后端开发的热门语言,内置了json模块来高效处理JSON数据。本文将从JSON基础概念入手,详细讲解Python3中json模块的核心函数用法,结合实例帮助你快速掌握JSON数据的编解码技巧。

      JSON是一种基于文本的轻量级数据交换格式,它源于JavaScript,但如今已成为跨语言、跨平台的数据交换标准。相比于XML,JSON语法更简洁、解析速度更快,非常适合传输结构化数据(如用户信息、接口返回结果等)。

      如果你对JSON语法尚不熟悉,可以先了解其核心数据类型:

      • 对象(对应Python的字典):用{key: value}表示,键值对之间用逗号分隔
      • 数组(对应Python的列表):用[value1, value2, ...]表示
      • 基本类型:字符串(双引号包裹)、数字(整数/浮点数)、布尔值(true/false)、空值(null

      Python3的标准库json模块提供了4个核心函数,分别用于字符串级别的编解码文件级别的编解码,覆盖了绝大多数JSON处理场景。

      函数用途 函数名 核心作用
      Python数据编码为JSON字符串 json.dumps() 将Python原生数据类型转换为JSON格式字符串
      JSON字符串解码为Python数据 json.loads() 将JSON格式字符串转换为Python原生数据类型
      Python数据写入JSON文件 json.dump() 将Python数据直接写入文件(JSON格式)
      从JSON文件读取Python数据 json.load() 从JSON文件中读取数据并转换为Python类型

      在编解码过程中,Python原生类型与JSON类型会自动转换,理解对应关系是避免数据异常的关键。

      当使用json.dumps()json.dump()时,Python数据会按照以下规则转换为JSON类型:

      Python原生类型 转换后的JSON类型 示例
      dict(字典) object(对象) {'name': 'xcLeigh'} → {"name": "xcLeigh"}
      list(列表)、tuple(元组) array(数组) [1, 2, 3] → [1,2,3];(1,2,3) → [1,2,3]
      str(字符串) string(字符串) "Python" → "Python"
      int/float(整数/浮点数) number(数字) 100 → 100;3.14 → 3.14
      True(布尔值) true True → true
      False(布尔值) false False → false
      None(空值) null None → null

      当使用json.loads()json.load()时,JSON类型会按照以下规则转换为Python类型:

      JSON类型 转换后的Python类型 示例
      object(对象) dict(字典) {"no": 1} → {'no': 1}
      array(数组) list(列表) ["xcLeigh", "Python"] → ['xcLeigh', 'Python']
      string(字符串) str(字符串) "https://xcleigh.blog.csdn.net/" → "https://xcleigh.blog.csdn.net/"
      number(int)(整数) int(整数) 10 → 10
      number(real)(浮点数) float(浮点数) 3.14 → 3.14
      true True true → True
      false False false → False
      null None null → None

      理论结合实践才能快速掌握,下面通过3个递进的案例,演示json模块的核心用法。

      将Python字典(最常用的结构化数据类型)转换为JSON字符串,方便后续传输或存储。

      #!/usr/bin/python3
      import json
      
      # 1. 定义Python字典(原始数据)
      data = {
          'no': 1,
          'name': 'xcLeigh',
          'url': 'https://xcleigh.blog.csdn.net/',
          'is_active': True,
          'tags': ['Python', 'JSON', '教程'],
          'score': 98.5,
          'extra_info': None
      }
      
      # 2. 使用json.dumps()编码为JSON字符串
      json_str = json.dumps(data)
      
      # 3. 打印结果对比
      print("Python原始数据(字典类型):", repr(data))
      print("JSON字符串(类型):", json_str)
      print("JSON字符串的类型:", type(json_str))  # 输出 <class 'str'>
      

      运行结果

      Python原始数据(字典类型): {'no': 1, 'name': 'xcLeigh', 'url': 'https://xcleigh.blog.csdn.net/', 'is_active': True, 'tags': ['Python', 'JSON', '教程'], 'score': 98.5, 'extra_info': None}
      JSON字符串(类型): {"no": 1, "name": "xcLeigh", "url": "https://xcleigh.blog.csdn.net/", "is_active": true, "tags": ["Python", "JSON", "教程"], "score": 98.5, "extra_info": null}
      JSON字符串的类型: <class 'str'>

      关键说明

      • Python的True转换为JSON的trueNone转换为null(JSON语法要求小写)
      • Python字典的键是字符串时,JSON字符串的键会自动用双引号包裹(JSON键必须是双引号字符串)

      将API返回的JSON字符串(或前端传递的JSON数据)转换为Python字典,方便后续数据处理(如提取字段、计算等)。

      #!/usr/bin/python3
      import json
      
      # 1. 模拟一个JSON字符串(例如API返回结果)
      json_str = '''
      {
          "no": 1,
          "name": "xcLeigh",
          "url": "https://xcleigh.blog.csdn.net/",
          "is_active": true,
          "tags": ["Python", "JSON", "教程"],
          "score": 98.5,
          "extra_info": null
      }
      '''
      
      # 2. 使用json.loads()解码为Python字典
      data = json.loads(json_str)
      
      # 3. 提取并使用数据
      print("解码后的Python数据类型:", type(data))  # 输出 <class 'dict'>
      print("网站名称:", data['name'])           # 输出 xcLeigh
      print("网站URL:", data['url'])            # 输出 https://xcleigh.blog.csdn.net/
      print("是否活跃:", data['is_active'])     # 输出 True
      print("标签列表:", data['tags'][0])       # 输出 Python(提取列表第一个元素)
      

      运行结果

      解码后的Python数据类型: <class 'dict'>
      网站名称: xcLeigh
      网站URL:https://xcleigh.blog.csdn.net/
      是否活跃: True
      标签列表: Python

      关键说明

      • JSON字符串中的true会转换为Python的Truenull转换为None
      • 解码后的数据可以直接用Python字典的语法操作(如data['key']提取值)

      当需要持久化存储JSON数据(如配置文件、日志数据)时,直接使用json.dump()json.load()操作文件,无需手动处理字符串写入/读取。

      步骤1:将Python数据写入JSON文件(json.dump())

      #!/usr/bin/python3
      import json
      
      # 1. 定义Python数据
      data = {
          'no': 1,
          'name': 'xcLeigh',
          'url': 'https://xcleigh.blog.csdn.net/',
          'tags': ['Python', 'JSON']
      }
      
      # 2. 使用with语句打开文件,自动管理文件关闭
      with open('data.json', 'w', encoding='utf-8') as f:
          # json.dump(数据, 文件对象)
          json.dump(data, f, ensure_ascii=False, indent=4)
      
      print("JSON数据已成功写入data.json文件")
      

      参数说明

      • ensure_ascii=False:允许写入非ASCII字符(如中文),避免乱码
      • indent=4:格式化输出,缩进4个空格,增强文件可读性

      运行后会生成data.json文件,内容如下:

      {
          "no": 1,
          "name": "xcLeigh",
          "url": "https://xcleigh.blog.csdn.net/",
          "tags": [
              "Python",
              "JSON"
          ]
      }
      

      步骤2:从JSON文件读取数据(json.load())

      #!/usr/bin/python3
      import json
      
      # 1. 使用with语句读取文件
      with open('data.json', 'r', encoding='utf-8') as f:
          # json.load(文件对象):读取文件并解码为Python数据
          data = json.load(f)
      
      # 2. 使用读取到的数据
      print("从文件读取的Python数据:", data)
      print("网站名称:", data['name'])
      print("标签数量:", len(data['tags']))
      

      运行结果

      从文件读取的Python数据: {'no': 1, 'name': 'xcLeigh', 'url': 'https://xcleigh.blog.csdn.net/', 'tags': ['Python', 'JSON']}
      网站名称: xcLeigh
      标签数量: 2

      数据类型不匹配错误:若Python数据中包含json模块不支持的类型(如datetime对象、自定义类实例),直接编码会报错。解决方案:自定义default参数(如json.dumps(data, default=str)将不支持的类型转为字符串)。

      文件编码问题:写入/读取JSON文件时,务必指定encoding='utf-8',否则中文等非ASCII字符可能出现乱码。

      dumpsdumploadsload的区别

      • s的函数(dumps/loads):操作字符串,适用于内存中的数据处理(如API交互)。
      • 不带s的函数(dump/load):操作文件对象,适用于文件持久化存储。

      到此这篇关于Python3入门之JSON数据解析全面学习教程的文章就介绍到这了,更多相关Python3 JSON数据解析内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

      您可能感兴趣的文章:

      • Python处理JSON文件的完整流程(读取、解析、修改和保存)
      • Python处理JSON的四大函数全解析(load/loads/dump/dumps)
      • 使用Python解析PPT文件并生成JSON结构详解
      • Python实现解析与生成JSON数据
      • 如何使用Python JSON解析和转换数据
      • 深入解析Python中的JSON比较

      站内搜索