当前位置: 首页 > news >正文

(20)100天python从入门到拿捏《JSON 数据解析》

JSON 数据解析

文章目录

  • JSON 数据解析
  • 一、JSON 数据解析
    • 1.1 什么是 JSON?
    • 1.2 JSON 的基本语法格式
    • 1.3 JSON 的语法规则
    • 1.4 为什么要用 JSON?
  • 二、对比其他格式
  • 三、Python 中的 `json` 模块
  • 四、案例
    • 案例1:基本读写与转换
    • 案例2:文件操作(保存与读取 JSON)
    • 案例3:解析网络 JSON 响应(模拟接口返回)
    • 案例4:复杂嵌套 JSON
  • 五、JSON 总结

一、JSON 数据解析

1.1 什么是 JSON?

JSON(JavaScript Object Notation) 是一种轻量级数据交换格式,常用于 Web 数据传输和配置文件。
它的结构与 Python 字典很相似。JSON 是一种用来表示和传输数据的文本格式。它以键-值对(key-value) 的方式来组织数据,非常类似于 Python 的字典(dict)或 JavaScript 的对象(object)

1.2 JSON 的基本语法格式

JSON 是纯文本,一般的结构如下:

{"name": "Alice","age": 25,"is_student": false,"skills": ["Python", "C", "STM32"],"address": {"city": "Shanghai","zip": "200000"}
}

1.3 JSON 的语法规则

  1. 数据以 键值对 形式出现("key": value
  2. 键key必须用 双引号
  3. 值value可以是:
    • 字符串("text")
    • 数字(123
    • 布尔值(true/false
    • 数组([1, 2, 3]
    • 对象({...}
    • null
  4. 不能有注释(这点与 Python 不同)
  5. 最外层可以是对象 {} 或数组 []

1.4 为什么要用 JSON?

因为它具有以下几个优点 :

跨语言通用

JSON 是纯文本格式,不依赖任何编程语言。
无论是 Python、C++、Java、JavaScript、Go,都能轻松解析和生成 JSON。

这让不同系统之间的数据交换变得非常方便。


结构清晰、可读性强

JSON 数据简洁明了,人和机器都容易理解与编辑。
相比 XML,以前常用的数据格式,JSON 更短、更易解析。


易于解析与序列化

大多数语言都有内置的 JSON 库,比如 Python 的 json 模块

import json# Python 对象转 JSON 字符串
data = {"name": "Alice", "age": 25}
json_str = json.dumps(data)
print(json_str)
# 输出:{"name": "Alice", "age": 25}# JSON 字符串转 Python 对象
data2 = json.loads(json_str)
print(data2["name"])
# 输出:Alice

常用于前后端数据交互

例如:

  • Web 页面(前端)与服务器(后端)之间的数据传输
  • 移动 APP 与服务器接口
  • 配置文件(如 config.json
  • 存储用户数据(如 users.json
  • API 数据返回(RESTful 接口)

二、对比其他格式

格式可读性数据体积使用复杂度应用场景
JSON简单Web接口、配置文件
XML较复杂老系统、文档格式
YAML易出错(缩进敏感)配置文件
CSV一般结构单一表格数据

简单说:**JSON 是一种轻量、通用、易读的数据交换格式,用于在不同系统之间传递结构化数据。

三、Python 中的 json 模块

Python 内置 json 模块可以实现:

  • json.dumps():Python 对象 → JSON 字符串
  • json.loads():JSON 字符串 → Python 对象
  • json.dump():Python 对象 → 写入 JSON 文件
  • json.load():从 JSON 文件读取 → Python 对象
JSON 数据类型Python 对应类型
objectdict
arraylist
stringstr
numberint / float
true / falseTrue / False
nullNone

四、案例

案例1:基本读写与转换

import json# Python 对象
data = {"name": "Tom","age": 25,"hobbies": ["reading", "coding", "music"],"married": False
}#  Python → JSON 字符串(序列化)
json_str = json.dumps(data, indent=4, ensure_ascii=False)
print("JSON 字符串:\n", json_str)#  JSON → Python(反序列化)
parsed = json.loads(json_str)
print("Python 对象:", parsed)
print("名字:", parsed["name"])

输出

JSON 字符串:{"name": "Tom","age": 25,"hobbies": ["reading","coding","music"],"married": false
}
Python 对象: {'name': 'Tom', 'age': 25, 'hobbies': ['reading', 'coding', 'music'], 'married': False}
名字: Tom

参数说明:

  • indent=4:缩进 4 个空格,美观打印
  • ensure_ascii=False:保留中文,保证中文正常显示,防止中文被转义成 \uXXXX

案例2:文件操作(保存与读取 JSON)

import jsonuser = {"username": "admin", "score": 99, "active": True}# 写入 JSON 文件
with open("user.json", "w", encoding="utf-8") as f:json.dump(user, f, ensure_ascii=False, indent=4)# 读取 JSON 文件
with open("user.json", "r", encoding="utf-8") as f:loaded_user = json.load(f)print("从文件读取:", loaded_user)

输出

从文件读取: {'username': 'admin', 'score': 99, 'active': True}

案例3:解析网络 JSON 响应(模拟接口返回)

import jsonresponse = '{"status":200,"data":{"city":"Beijing","temp":18.5}}'data = json.loads(response)
print("城市:", data["data"]["city"])
print("温度:", data["data"]["temp"])

输出


城市: Beijing
温度: 18.5

案例4:复杂嵌套 JSON

import jsontext = '''
{"employees": [{"name": "Alice", "age": 30},{"name": "Bob", "age": 25},{"name": "Charlie", "age": 28}]
}
'''obj = json.loads(text)for emp in obj["employees"]:print(f"{emp['name']} 的年龄是 {emp['age']}")

输出


Alice 的年龄是 30
Bob 的年龄是 25
Charlie 的年龄是 28

五、JSON 总结

功能方法说明
序列化(Python → JSON)json.dumps(obj)返回字符串
写入文件json.dump(obj, file)直接写入文件
反序列化(JSON → Python)json.loads(str)解析字符串
读取文件json.load(file)从文件读取 JSON

python学习专栏导航
(1)100天python从入门到拿捏《Python 3简介》
(2)100天python从入门到拿捏《python应用前景》
(3)100天python从入门到拿捏《数据类型》
(4)100天python从入门到拿捏《运算符》
(5)100天python从入门到拿捏《流程控制语句》
(6)100天python从入门到拿捏《推导式》
(7)100天python从入门到拿捏《迭代器和生成器》
(8)100天python从入门到拿捏《函数和匿名函数》
(9)100天python从入门到拿捏《装饰器》
(10)100天python从入门到拿捏《Python中的数据结构与自定义数据结构》
(11)100天python从入门到拿捏《模块》
(12)100天python从入门到拿捏《文件操作》
(13)100天python从入门到拿捏《目录操作》
(14)100天python从入门到拿捏《Python的错误与异常机制》
(15)100天python从入门到拿捏《面向对象编程》
(16)100天python从入门到拿捏《标准库》
(17)100天python从入门到拿捏《正则表达式》
(18)100天python从入门到拿捏《网络编程》
(19)100天python从入门到拿捏《多线程》

http://www.dtcms.com/a/481909.html

相关文章:

  • 战略携手!沃飞长空与西门子数字化工业软件签约
  • 从零开始的C++学习生活 7:vector的入门使用
  • 队列数据结构详解:从原理到实现
  • JavaScript构造函数详解
  • 学习无刷直流电机驱动硬件
  • 案例应聘网络营销做网站推广网络营销的种类有哪些
  • 西安网站建设网莱芜网站推广
  • 从RNN到LSTM:深入理解循环神经网络与长短期记忆网络
  • AIDL 接口的定义与生成,使用
  • 深度解析过拟合与欠拟合:从诊断到正则化策略的全面应对
  • python - 装箱项目/3D Bin Packing problem
  • 【自动驾驶】自动驾驶概述 ⑨ ( 自动驾驶软件系统概述 | 预测系统 | 决策规划 | 控制系统 )
  • STM32F103C8T6 GY-906 MLX90614ESF 无线测温传感器模块的使用方法和代码驱动
  • 常规的紫外工业镜头有哪些?能做什么?
  • 香洲网站建设品牌形象设计方案
  • 突破AR视觉交互边界:Unity赋能Rokid AR眼镜实现高精度图像识别与实时跟踪
  • zabbix安装
  • 【VTK实战】vtkDepthImageToPointCloud:从2D深度图到3D点云,手把手教你落地3D扫描/AR场景
  • 【Git版本控制】Git初识、安装、仓库初始化与仓库配置(含git init、git config与配置无法取消问题)
  • 浅谈目前主流的LLM软件技术栈:Kubernetes + Ray + PyTorch + vLLM 的协同架构
  • 北京企业建站团队30岁转行做网站编辑
  • Kubernetes云平台管理实战:滚动升级与秒级回滚
  • 苹果智能眼镜研发进度更新,三星/微美全息提速推进AI+AR产业化进程
  • vue3+ts+uniapp微信小程序xr-frame实现AR追踪器(ARTracker)
  • Git分支合并文件丢失问题解决教程
  • GESP2025年9月认证C++四级( 第三部分编程题(2)最长连续段)
  • 花都建设局网站成都网站设计龙兵科技
  • OpenCV Python 绑定:原理与实战
  • flutter布局调试
  • Linux下运行Jmeter