百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

Python JSON数据处理全攻略:从入门到实战,新手也能轻松掌握!

liuian 2025-04-11 00:58 36 浏览

引言

在当今数据驱动的时代,JSON(JavaScript Object Notation)已成为互联网数据交换的“通用语言”。无论是API接口、配置文件还是网络爬虫,JSON都扮演着核心角色。本文将通过零基础手把手教学+实战案例,带你掌握Python处理JSON的核心技巧,并附赠今日头条数据抓取实战代码,助你快速进阶!


一、JSON基础:为什么每个程序员都必须掌握?

JSON是一种轻量级的数据格式,具有以下优势:

  1. 易读性:键值对结构清晰,如{"name": "张三", "age": 25};
  2. 跨平台性:支持Python、Java、JavaScript等多种语言;
  3. 高效传输:体积小,解析速度快,适合网络传输。

JSON常见格式示例:

{
  "用户": [
    {"name": "张三", "hobbies": ["篮球", "编程"]},
    {"name": "李四", "email": "lisi@example.com"}
  ]
}

二、Python操作JSON的四大核心函数

函数

作用

场景

json.dumps()

将Python对象转为JSON字符串

数据序列化

json.loads()

将JSON字符串转为Python对象

数据反序列化

json.dump()

将Python对象写入JSON文件

文件存储

json.load()

从JSON文件读取数据到Python对象

文件读取

代码示例:数据转换与文件读写

import json

# 数据转JSON字符串
data = {"platform": "今日头条", "users": [{"name": "小王", "粉丝数": 10000}]}
json_str = json.dumps(data, indent=4)  # indent参数让JSON格式化排版
print("JSON字符串:\n", json_str)

# 写入JSON文件
with open('data.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False)  # 确保中文正常显示

# 从文件读取
with open('data.json', 'r') as f:
    loaded_data = json.load(f)
print("读取到的数据:", loaded_data)

三、实战案例:抓取今日头条热门文章数据(附完整代码)

步骤1:安装依赖库

pip install requests

步骤2:发送请求并解析JSON

import requests
import json

def fetch_toutiao_hot():
    url = "https://www.toutiao.com/api/pc/list/feed?channel_id=3189398972"  # 娱乐频道接口
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
    }
    
    response = requests.get(url, headers=headers)
    if response.status_code == 200:
        data = json.loads(response.text)
        for article in data.get('data', []):
            title = article.get('title', '无标题')
            read_count = article.get('read_count', 0)
            print(f"标题: {title} | 阅读量: {read_count}")
    else:
        print("请求失败,状态码:", response.status_code)

fetch_toutiao_hot()

代码解析:

  • 使用requests库模拟浏览器请求,绕过简单反爬机制;
  • json.loads()解析返回的JSON数据,提取标题和阅读量;
  • 关键点:需添加User-Agent请求头,否则可能被服务器拒绝。

四、进阶技巧:处理复杂JSON结构

  1. 嵌套数据提取

若JSON数据多层嵌套,可通过递归或逐层访问:

# 示例:提取所有用户的兴趣标签
data = {
    "department": {
        "name": "技术部",
        "members": [
            {"name": "张三", "tags": ["Python", "AI"]},
            {"name": "李四", "tags": ["Java", "大数据"]}
        ]
    }
}

all_tags = [tag for member in data['department']['members'] for tag in member['tags']]
print("所有兴趣标签:", all_tags)  # 输出: ['Python', 'AI', 'Java', '大数据']
  1. 数据格式化与排序
data = {"b": 2, "a": 1, "c": 3}
formatted_json = json.dumps(data, indent=2, sort_keys=True)
print(formatted_json)
# 输出按键名排序的格式化JSON

五、避坑指南:新手常见问题

  1. 编码问题:使用ensure_ascii=False参数避免中文乱码;
  2. 文件路径错误:建议使用绝对路径或检查文件权限;
  3. 数据类型不匹配:JSON的null对应Python的None,true/false对应True/False。

结语

通过本文,你已掌握从基础操作到实战应用的完整JSON处理技能。无论是本地数据存储,还是网络数据抓取,JSON都是Python程序员不可或缺的工具。立即动手运行示例代码,探索更多数据处理的可能!

今日头条原创提示:本文代码经过实测,转载请注明出处。关注作者,获取更多Python爬虫与数据分析实战技巧!

#python##python自学##干货##编程#

相关推荐

iOS9不越狱也能用:苹果Xcode 7编译安装第三方应用教程

在苹果iOS9正式版系统中,即使你不越狱现在也可以安装一些AppStore中根本不存在的应用程序,听上去感觉有些不可思议是吧,一起来看看这到底是怎么做到的。需要准备的东西:你需要准备一台Mac、X...

Python+Appium控制 iOS 真机,滑动、输入、点击全搞定!

移动端自动化测试中,Appium+iOS测试算是门槛稍高但非常关键的一环。很多测试同学面对XCUITest+真机操作时,总觉得“设备连不上”、“控件找不到”、“滑动失败”。先看效果今天我用...

从零到一:用Cursor和Xcode打造你的iOS App!

想要开发自己的iOSApp吗?跟随我们的教程,从前期准备到App上架,一步步教你如何实现!"步骤1:开发App的前期准备"设备和软件:你需要一台Mac电脑、免费的Xcode和Curs...

苹果向开发者推送visionOS 2.5的第四个测试版

近日,苹果面向开发者正式推送了visionOS2.5的第四个Beta开发者预览版,版本号为22O5467a。开发者只需打开设备端的设置应用,在相关选项中找到“开发者测试版”开关,即可开启下...

苹果向开发者推送visionOS 2.5的第一个测试版

苹果公司近日向其注册开发者推送了visionOS2.5更新的第一个Beta测试版,版本号为22O5442g。为了安装这一测试版,开发者们只需通过VisionPro设备上的“设置”应用...

iPhone 16 Pro Max Xcode首选,iPad Pro 2024开发利器

最佳开发者适配机型榜1.iPhone16ProMax(A18Pro模拟器优化)2.iPadPro2024(M4芯片多任务)3.iPhone15Pro(Xcode调试工具)4.iP...

react native中自定义 URL Scheme并跳转到指定页面

在ReactNative中实现类似Android的自定义URLScheme(myapp://open)并跳转到指定页面,可以通过以下步骤完成。ReactNative提供了对深度链接(...

传闻暗示 iPhone 将推出桌面模式(苹果推出页面怎样才能保持推出前的状态)

最近,除了有关iOS视觉效果大幅重新设计和更像Mac的iPadOS体验的传闻外,还有一个有趣的传闻正在流传:iPhone可能会获得某种桌面模式。MajinBu上周写道,一些匿名消息人士称,...

苹果visionOS 1.3首个测试版开启推送 建议谨慎下载

【CNMO科技消息】据外媒报道,开发者现已能够下载体验visionOS1.3首个测试版,只需将其安装在VisionPro上即可。这一版本的发布紧随5月7日释出的第五个测试版之后,而在此之前,4月3...

XcodeBuildMCP 让 AI 代理能够通过标准化接口与 Xcode 项目进行交互

项目介绍XcodeBuildMCP是一个ModelContextProtocol(MCP)服务器,提供与Xcode相关的工具,以便与AI助手和其他MCP客户端集成。它旨在通过标准化接口优化开发...

每日学习“Xcode”是什么呢?(xcode是开发什么的)

Xcode是苹果公司为macOS系统量身打造的集成开发环境(IDE),专为开发苹果生态系统内的各类应用程序,其中也包括游戏。以下从特点、安装使用、在游戏开发中的应用方面详细介绍。特点全平台支持:...

升级wpsjs工具包,创建和发布wps加载项

前一段时间wpsjs工具包不能创建、调试和发布wps加载项,目前已修复,请更新到最新版。wpsjs工具包升级到最新版可以创建和发布wps加载项。执行以下命令:npmupdate-gwpsjs...

如何在 TypeScript 中使用Enum(枚举)

在TypeScript中,枚举或枚举类型是具有一组常量值的常量长度的数据结构。这些常量值中的每一个都称为枚举的成员。在设置只能是一定数量的可能值的属性或值时,枚举很有用。一个常见的例子是一副扑克...

Vue独立组件——11个最佳Vue.js日期选择器组件

介绍本文主要介绍几个Vue的时间日期选择器组件,目的在于让开发者们多一些选择,不管是从功能还是从样式,都可以选择一个适合的组件,这些组件没有绝对的好与不好,就看个人如何选择了,以下分别介绍十一个日期选...

ABP Framework 手动升级指南:从6.0.1升级到7.0.0

ABP7.0.0正式版已经发布,ABP-Framework-All-In-One项目同步升级。LeptonXLiteTheme目前还没有包含在源码解决方案中,还是以Nuget包提供,目...