python json详解

json 是 Python 中用于处理 JSON 数据的标准库。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人类阅读和编写,同时也易于机器解析和生成。Python 的 json 模块提供了将 Python 对象与 JSON 数据相互转换的功能。

1. 基本功能

json 模块提供了四个主要的函数:

  • json.dump()
  • json.dumps()
  • json.load()
  • json.loads()

1.1 json.dump()

json.dump() 用于将 Python 对象序列化为 JSON 格式,并写入文件。

import jsondata = {"name": "Alice","age": 30,"is_student": False
}with open('data.json', 'w') as file:json.dump(data, file)

1.2 json.dumps()

json.dumps() 用于将 Python 对象序列化为 JSON 格式的字符串。

import jsondata = {"name": "Alice","age": 30,"is_student": False
}json_string = json.dumps(data)
print(json_string)

1.3 json.load()

json.load() 用于从文件中读取 JSON 数据,并将其反序列化为 Python 对象。

import jsonwith open('data.json', 'r') as file:data = json.load(file)print(data)

 1.4 json.loads()

json.loads() 用于将 JSON 格式的字符串反序列化为 Python 对象。

import jsonjson_string = '{"name": "Alice", "age": 30, "is_student": false}'
data = json.loads(json_string)
print(data)

2. 参数详解

2.1 json.dump() 和 json.dumps()

  • obj: 要序列化的 Python 对象。
  • fp: 文件对象(仅适用于 json.dump())。
  • skipkeys: 如果为 True,则跳过无法序列化的键。
  • ensure_ascii: 如果为 False,则输出包含非 ASCII 字符。
  • check_circular: 如果为 False,则禁用循环引用检查。
  • allow_nan: 如果为 False,则禁止 NaN、Infinity 和 -Infinity。
  • cls: 自定义 JSON 编码器类。
  • indent: 缩进级别,用于格式化输出。
  • separators: 用于分隔 JSON 对象的项和键值对的字符串。
  • default: 自定义序列化函数。
  • sort_keys: 如果为 True,则按键排序输出。

示例:

import jsondata = {"name": "Alice","age": 30,"is_student": False
}json_string = json.dumps(data, indent=4, sort_keys=True)
print(json_string)

2.2 json.load() 和 json.loads()

  • fp: 文件对象(仅适用于 json.load())。
  • s: JSON 字符串(仅适用于 json.loads())。
  • cls: 自定义 JSON 解码器类。
  • object_hook: 自定义对象钩子函数。
  • parse_float: 自定义浮点数解析函数。
  • parse_int: 自定义整数解析函数。
  • parse_constant: 自定义常量解析函数。
  • object_pairs_hook: 自定义对象对钩子函数。

示例:

import jsonjson_string = '{"name": "Alice", "age": 30, "is_student": false}'def custom_decoder(dct):if 'age' in dct:dct['age'] = str(dct['age']) + " years old"return dctdata = json.loads(json_string, object_hook=custom_decoder)
print(data)

3. 错误处理

在处理 JSON 数据时,可能会遇到一些常见的错误,例如文件不存在或 JSON 格式不正确。可以使用 try-except 块来处理这些错误:

import jsontry:with open('data.json', 'r') as file:data = json.load(file)print(data)
except FileNotFoundError:print("文件未找到")
except json.JSONDecodeError:print("JSON 格式错误")

4. 总结

Python 的 json 模块提供了强大的功能来处理 JSON 数据。通过 json.dump() 和 json.dumps(),你可以将 Python 对象序列化为 JSON 格式;通过 json.load() 和 json.loads(),你可以将 JSON 数据反序列化为 Python 对象。利用这些功能,你可以轻松地在 Python 程序中处理 JSON 数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/60852.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPS宏编辑器开发,单元格内容变更自动触发事件

WPS中Excel的“触发器” 写在前面宏的开发1、切换宏编辑器开发环境2、小练习:自定义函数3、完成功能需求:单元格内容变更自动触发事件 总结 写在前面 我先生用EXCEL做了一张学生存款表。设计得很简单,A学生已存款X元,A学生再次存…

新版Apache Tomcat ⽬目录文件讲解(笔记)

简介:Tomcat⽬目录⽂文件讲解 bin (关注) 启动和关闭tomcat脚本 startup.sh/startup.bat (Linux平台或Mac上的启动脚本/Windows平台上的启动脚本) shutdown.sh/shutdown.bat (Linux平台或Mac上的关闭脚本/Windows平台上的关闭脚本) conf&am…

java Arrays 详解

Java Arrays 类详解 Arrays 是 Java 中一个专门用于操作数组的工具类,位于 java.util 包中。它提供了多种用于数组操作的方法,例如排序、搜索、填充、比较、转换等。 1. 常用方法分类 1.1 排序 方法描述Arrays.sort(array)对数组进行升序排序&#xf…

Go 语言已立足主流,编程语言排行榜24 年 11 月

Go语言概述 Go语言,简称Golang,是由Google的Robert Griesemer、Rob Pike和Ken Thompson在2007年设计,并于2009年11月正式宣布推出的静态类型、编译型开源编程语言。Go语言以其提高编程效率、软件构建速度和运行时性能的设计目标,…

一个win32 / WTL下多线程库(CThread类)的使用心得

说是多线程库&#xff0c;其实就是一个单独的.h文件&#xff0c;可以方便的放入WTL/win32工程中。 下载地址&#xff1a;CThread. 里面也简单介绍了 用法。 具体用法&#xff0c;首先自定义一个子线程类继承CThreadImpl<T>&#xff0c;注意他是个模板类。 class CMySu…

Kettle配置数据源错误“Driver class ‘org.gjt.mm.mysql.Driver‘ could not be found”解决记录

问题描述 错误提示&#xff1a;“Driver class ‘org.gjt.mm.mysql.Driver’ could not be found, make sure the ‘MySQL’ driver (jar file) is installed.” 原因分析&#xff1a; 根据错误提示是缺少了相关的数据源连接jar包。 解决方案&#xff1a; 安装对应的Mysql…

PCA 原理推导

针对高维数据的降维问题&#xff0c;PCA 的基本思路如下&#xff1a;首先将需要降维的数据的各个变量标准化&#xff08;规范化&#xff09;为均值为 0&#xff0c;方差为 1 的数据集&#xff0c;然后对标准化后的数据进行正交变换&#xff0c;将原来的数据转换为若干个线性无关…

河道无人机雷达测流监测系统由哪几部分组成?

在现代水利管理中&#xff0c;河道无人机雷达监测系统正逐渐成为一种重要的工具&#xff0c;为河道的安全和管理提供了强大的技术支持。那么&#xff0c;这个先进的监测系统究竟由哪几部分组成呢&#xff1f; 河道无人机雷达监测系统工作原理 雷达传感器通过发射电磁波或激光束…

DDRPHY数字IC后端设计实现系列专题之数字后端floorplanpowerplan设计

3.2.3 特殊单元的布局 布图阶段除了布置 I/O 单元和宏单元&#xff0c;在 28nm 制程工艺时&#xff0c;还需要处理两种特 殊的物理单元&#xff0c;Endcap 和 Tapcell。 DDRPHY数字IC后端设计实现系列专题之后端设计导入&#xff0c;IO Ring设计 &#xff08;1&#xff09;拐…

实现金蝶云与MySQL的无缝数据集成

金蝶云与MySQL的费用申请单数据集成案例 金蝶云星空数据集成到MySQL的技术案例分享 在企业信息化系统中&#xff0c;数据的高效流转和准确对接是业务顺利运行的关键。本文将聚焦于一个具体的系统对接集成案例&#xff1a;如何通过轻易云数据集成平台&#xff0c;将金蝶云星空中…

Flink Source 详解

Flink Source 详解 原文 flip-27 FLIP-27 介绍了新版本Source 接口定义及架构 相比于SourceFunction&#xff0c;新版本的Source更具灵活性&#xff0c;原因是将“splits数据获取”与真“正数据获取”逻辑进行了分离 重要部件 Source 作为工厂类&#xff0c;会创建以下两…

Android Settings 单元测试 | 如何运行单元测试?

背景 在Android Settings 单元测试 | Telephony Network 模块 APN 案例中粗略介绍了单元测试逻辑内容&#xff0c;但是在独立APK里面如何将单元测试跑起来还是有疑问&#xff0c;因为APP不能直接install&#xff0c;无法借助Android Studio直接Run&#xff0c;在安装的一步会报…

【Qt聊天室】客户端实现总结

目录 1. 项目概述 2. 功能实现 2.1 主窗口设计 2.2 功能性窗口 2.3 主界面功能实现 2.4 聊天界面功能实现 2.5 个人信息功能开发 2.6 用户信息界面设置功能 2.7 单聊与群聊 2.8 登录窗口 2.9 消息功能 3. 核心设计逻辑 3.1 核心类 3.2 前后端交互与DataCenter 4…

行业类别-智能制造-子类别工业4.0-细分类别物联网应用-应用场景智能工厂建设

1.大纲分析 针对您提出的题目“4.0 行业类别-智能制造-子类别工业4.0-细分类别物联网应用-应用场景智能工厂建设”&#xff0c;以下是一个详细的大纲分析&#xff0c;旨在深入探讨该应用场景下的各个方面&#xff1a; 一、引言 智能制造与工业4.0概述 智能制造的定义与发展趋…

【异常记录】Junitmock之InvalidUseOfMatchersException异常

mock之InvalidUseOfMatchersException异常 新手小白对mock一知半解&#xff0c;就开始自测了&#xff0c;被这个InvalidUseOfMatchersException困扰了一晚上。排查了好久&#xff0c;大多数文章都把英文翻译了一遍&#xff0c;但自检无问题。最后发现是&#xff0c;注入的时候…

将多张图片按照顺序合并成一个PDF文件

刚开始合并没有顺序&#xff0c;合并成了一个指定文件了&#xff0c;但排序是乱的。 import os from PIL import Imagedef folder_to_pdf(folder_path, output_path):image_paths []for file_name in os.listdir(folder_path):if file_name.endswith((jpg, jpeg, png)):image…

普通电脑上安装属于自己的Llama 3 大模型和对话客户端

#大模型下载地址&#xff1a;# Llama3 因为Hugging Face官网正常无法访问&#xff0c;因此推荐国内镜像进行下载&#xff1a; 官网地址&#xff1a;https://huggingface.co 国内镜像&#xff1a;https://hf-mirror.com GGUF 模型文件名称接受&#xff0c;如上述列表中&…

实用且免费的 IP 地域查询 API 接口推荐

实用且免费的 IP 地域查询 API 接口推荐 在日常开发中&#xff0c;IP 地域查询是一个常见需求。最近无意间发现一个实用的 IP 地域查询 API&#xff0c;目前是免费的&#xff0c;未来是否收费尚不可知&#xff0c;但在当前情况下非常值得推荐。 API 地址示例&#xff1a; ht…

java瑞吉外卖

环境搭建 一、数据库环境搭建 1.新建数据库reggie&#xff0c;这里字符集一般用utf8mb4&#xff0c;排序规则一般用utf8mb4_general_ci或utf8mb4_unicode_ci 2.然后导入表结构 二、创建springboot工程 然后检查maven仓库设置&#xff0c;jdk 这是我的pom.xml文件 <?xml …

提高 RAG 生成准确性

提高 RAG 生成准确性&#xff1a;详细优化策略与具体示例 1. 优化检索模块&#xff1a;提高检索的相关性与准确性 在 RAG 中&#xff0c;检索模块&#xff08;Retriever&#xff09;用于从大量文档中选择相关内容。如果检索模块选择的文档与问题不匹配&#xff0c;生成的答案…