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

Python中JSON使用指南:从基础到高效技巧

Python中JSON使用指南:从基础到高效技巧

JSON(JavaScript Object Notation)是轻量级的数据交换格式,凭借易读性和跨平台特性,成为现代开发中不可或缺的工具。Python内置的json库提供了完整的JSON处理功能,以下是核心用法及实用技巧。


一、JSON与Python的对应关系

JSON与Python数据类型可相互转换:

  • JSON → Pythonobject→字典、array→列表、string→字符串、number→整数/浮点数、true/falseTrue/FalsenullNone
  • Python → JSON:字典→object、列表/元组→arrayNonenull

二、核心方法

1. 字符串与对象的转换

  • 解码JSON字符串json.loads()
    import json  
    json_str = '{"name": "John", "age": 30}'  
    data = json.loads(json_str)  # 输出字典:{'name': 'John', 'age': 30}  
    
  • 编码为JSON字符串json.dumps()
    data = {"city": "New York", "population": 8.4e6}  
    json_str = json.dumps(data)  # 输出字符串:{"city": "New York", "population": 8400000.0}  
    

2. 文件读写

  • 从文件读取JSONjson.load()
    with open("data.json", "r") as f:  
        data = json.load(f)  
    
  • 写入JSON到文件json.dump()
    with open("output.json", "w") as f:  
        json.dump(data, f)  
    

三、美化与优化

1. 格式化输出

通过indentsort_keys参数增强可读性:

json_str = json.dumps(data, indent=2, sort_keys=True)  

2. 处理中文

设置ensure_ascii=False避免Unicode转义:

json.dumps({"姓名": "张三"}, ensure_ascii=False)  # 输出:{"姓名": "张三"}  

四、高级技巧

1. 命令行工具

验证或格式化JSON文件:

python3 -m json.tool input.json  

2. JMESPath查询

安装jmespath后快速提取嵌套数据:

import jmespath  
data = {"users": [{"name": "Alice"}, {"name": "Bob"}]}  
result = jmespath.search("users[*].name", data)  # 输出:['Alice', 'Bob']  

3. 处理复杂结构

递归处理嵌套字典/列表:

def process(data):  
    if isinstance(data, dict):  
        return {k: process(v) for k, v in data.items()}  
    elif isinstance(data, list):  
        return [process(item) for item in data]  
    else:  
        return data  

五、总结

Python的json库功能强大,覆盖从基础转换到文件操作的完整需求。推荐工具:

  • simplejson:支持高精度数值处理的第三方库
  • describejson:快速分析大型JSON结构

相关文章:

  • RLock类详细介绍、应用场景和示例代码
  • Golang中的 “...” 操作符
  • 设计心得——分层和划分模块
  • 记录docker部署mysql访问的一些坑
  • 国产化板卡设计原理图:2330-基于FMC接口的JFM7K325T PCIeX4 3U PXIe接口卡
  • Lambda表达式详解
  • 工业自动化核心:BM100 信号隔离器的强大力量
  • Oracle RAC配置原理详解:构建高可用与高性能的数据库集群
  • 在 Docker 中搭建GBase 8s主备集群环境
  • 002-SpringCloud-OpenFeign(远程调用)
  • OpenCV计算摄影学(17)两个图像之间执行无缝克隆操作函数 seamlessClone()
  • 设计模式-结构型模式-适配器模式
  • 【SpringMVC】深入解析@ RequestMapping 注解的概念及使用和 MVC 介绍
  • 利用可变参数模板,可打印任意参数和参数值。(C++很好的调式函数)
  • Deepseek可以通过多种方式帮助CAD加速工作
  • Docker和DockerCompose基础教程及安装教程
  • dify中使用NL2SQL
  • Java直通车系列15【Spring MVC】(ModelAndView 使用)
  • 计算机视觉|从0到1揭秘Diffusion:图像生成领域的新革命
  • SpreadVue实现内置excel在线编辑并保存为后端可以接受的json格式
  • 有了网站怎么做app/百度指数排名
  • 网站建设公司推荐金石下拉网络/平台推广是做什么
  • 手机商城网站系统/网站推广的方法
  • 做企业网站专用词/怎么样做推广最有效
  • html制作一个个人主页网站/免费sem工具
  • 买网站平台名字吗/怎么提高百度关键词排名