Python JSON dumps与loads傻傻分不清

2023-05-16

一、JSON基本概念

JSON代表JavaScript对象符号。它是一种轻量级的数据交换格式,用于存储和交换数据。它是一种独立于语言的格式,非常容易理解,因为它本质上是自描述的。 python中有一个内置包,它支持JSON数据,称为json。 JSON中的数据表示为quoted-strings,由大括号{}之间的键值映射组成。通俗来说就是一种在接口中易于使用的数据处理模块,但是json不属于数据格式。

二、Python和JSON类型映射

:::JSON::::::Python:::
objectdict
arraylist
stringstr
numberint
trueTrue
falseFalse
nullNone

三、JSON模块

Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它主要提供了四个方法: dump、dumps、load、loads。
dump和dumps对python对象进行序列化。将一个Python对象进行JSON格式的编码。
load和loads反序列化方法,将json格式数据解码为Python对象。

  • json.load()从json文件中读取数据
  • json.loads()将str类型的数据转换为dict类型
  • json.dumps()将dict类型的数据转成str
  • json.dump()将数据以json的数据类型写入文件中

dumps函数

json.dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

1.obj
表示要序列化的对象
3.skipkeys
默认为False。如果skipkeys是True则将跳过不是基本类型(str,int,float,bool,None)的dict键,不会引发TypeError。
4、ensure_ascii
默认值为True,能将所有传入的非ASCII字符转义输出。如果ensure_ascii为False,则这些字符将按原样输出。ensure_ascii=False,让文件中的中文可以直接显示!
5、check_circular
默认值为True。如果check_circular为False,则将跳过对容器类型的循环引用检查,循环引用将导致OverflowError。
6、allow_nan
默认值为True。如果allow_nan为True,则将使用它们的JavaScript等效项(NaN,Infinity,-Infinity)。
如果allow_nan为False,则严格遵守JSON规范,序列化超出范围的浮点值(nan,inf,-inf)会引发ValueError。
7、indent
设置缩进格式,默认值为None,选择的是最紧凑的表示。如果indent是非负整数或字符串,那么JSON数组元素和对象成员将使用该缩进级别进行输入;indent为0,负数或“”仅插入换行符;indent使用正整数缩进多个空格;如果indent是一个字符串(例如“\t”),则该字符串用于缩进每个级别。
8、separators
去除分隔符后面的空格,默认值为None。如果指定,则分隔符应为(item_separator,key_separator)元组。如果缩进为None,则默认为(’,’,’:’);要获得最紧凑的JSON表示,可以指定(’,’,’:’)以消除空格。
9、default
默认值为None。如果指定,则default应该是为无法以其他方式序列化的对象调用的函数。它应返回对象的JSON可编码版本或引发TypeError。如果未指定,则引发TypeError。
10、sort_keys
默认值为False。如果sort_keys为True,则字典的输出将按键值排序。

loads函数

json.loads(s, *, encoding=None, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)

1、s
将s(包含JSON文档的str,bytes或bytearray实例)反序列化为Python对象。
2、encoding
指定一个编码的格式。
2、object_hook
默认值为None,object_hook是一个可选函数,此功能可用于实现自定义解码器。指定一个函数,该函数负责把反序列化后的基本类型对象转换成自定义类型的对象。
3、parse_float
默认值为None。如果指定了parse_float,用来对JSON float字符串进行解码,这可用于为JSON浮点数使用另一种数据类型或解析器。
4、parse_int
默认值为None。如果指定了parse_int,用来对JSON int字符串进行解码,这可以用于为JSON整数使用另一种数据类型或解析器。
5、parse_constant
默认值为None,如果指定了parse_constant,对-Infinity,Infinity,NaN字符串进行调用。如果遇到了无效的JSON符号,会引发异常。
如果进行反序列化(解码)的数据不是一个有效的JSON字符串,将会引发 JSONDecodeError异常。

四、实例

dumps

import json
# 将字典转换成json字符串
dict_data_01 = {'姓名': 'zhangsan', '性别': '男', 10: None, "age": 18, None: True}
print(dict_data_01, type(dict_data_01))
json_data_01 = json.dumps(dict_data_01)
print(json_data_01, type(json_data_01))
json_data_01 = json.dumps(dict_data_01,ensure_ascii=False)
print(json_data_01, type(json_data_01))

# 输出
# {"\u59d3\u540d": "zhangsan", "\u6027\u522b": "\u7537", "10": null, "age": 18, "null": true} <class 'str'>
# {'姓名': 'zhangsan', '性别': '男', 10: None, 'age': 18, None: True} <class 'dict'>
# {"姓名": "zhangsan", "性别": "男", "10": null, "age": 18, "null": true} <class 'str'>

loads

import json
# 将json字符串转换成字典
json_data_02 = '{"姓名": "zhangsan", "性别": "男", "10": null, "age": 18, "null": true}'
dict_data_02 = json.loads(json_data_02)
print(json_data_02, type(json_data_02))
print(dict_data_02, type(dict_data_02))

# {"姓名": "zhangsan", "性别": "男", "10": null, "age": 18, "null": true} <class 'str'>
# {'姓名': 'zhangsan', '性别': '男', '10': None, 'age': 18, 'null': True} <class 'dict'>

五、最后

以上就是Python中json模块dumps与loads的详解,json模块中还有dump与load,是对json文件进行操作的,与文中类似。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python JSON dumps与loads傻傻分不清 的相关文章

  • 让BottomSheetDialogFragment透传点击事件

    说来很难 实际也很难 如果内嵌到一起就更好了 但是往往这样又要起笔很多代码 思路 点击dialog 记录这个坐标 然后回传给activity 然后activity再次点击坐标 给你思路你也做不出来 很难的 开始吧 定义一个点击方法 impo
  • win10 装黑苹果 完整教程

    一 材料准备 1 虚拟机软件VMware 2 适用于Windows版本的VMware解锁安装Mac OS的补丁 3 Mac OS X 10 10的黑苹果镜像 以上材料我都为你贴心地准备齐了 xff0c 在我的云盘获取 xff0c 链接 xf
  • MD5加密算法原理及实现

    全称 message digest algorithm 5 翻译过来就是 信息 摘要 算法 5 1 特点 1 长度固定 不管多长的字符串 加密后长度都是一样长 作用 方便平时信息的统计和管理 2 易计算 字符串和文件加密的过程是容易的 作用
  • 强制退出Mac程序的六种方法

    1 使用键盘快捷键强制退出处于活跃状态的Mac程序 快捷键 xff1a Command 43 Option 43 Shift 43 Esc 这样按住一两秒钟 xff0c 就可以强制退出当前程序了 xff0c 算是最方便的一种方法 2 打开强
  • 多小区智慧物业管理系统源码

    多小区智慧物业管理系统源码带文字安装教程 运行环境 xff1a 服务器宝塔面板 PHP 7 0 Mysql 5 5及以上版本 Linux Centos7以上 统计分析以小区为单位 xff0c 统计如下数据 xff1a 小区总栋数 小区总户数
  • Android获取当前系统日期和时间的三种方法

    第一种方法 SimpleDateFormat simpleDateFormat 61 new SimpleDateFormat 34 yyyy年MM月dd日 HH mm ss 34 HH mm ss 获取当前时间 Date date 61
  • 成功解决org.gradle.api.internal.tasks.compile.CompilationFailedException: Compilation failed;

    升级完Android Stadio 3 1以后 将所有的compile变为implementation 后 xff0c clean和rebuild都没有发现错误 xff0c 唯独在run的时候出现了以下错误 xff1a Caused by
  • SQL里面的排序语句desc和ASC有什么区别

    SQL 语句中 asc是指定列按升序排列 xff0c desc则是指定列按降序排列 排序子句语法 xff1a order by 列名 asc desc 例表格 xff1a tt 1 按列n2的升序排列 1 select from tt or
  • cmd 命令如何装逼 滚动屏幕

    在cmd环境下打开文件和文件夹 喜欢装逼的大伙可以看看 打开文件夹的话 用start命令 例如start 文件夹 打开文件 进入指定目录后 直接键入文件名就行 或者直接start 路径 例如start g tmp lt 打开文件夹 star
  • Android 最常用的四种底部导航栏实现

    Android 底部导航栏实现 底部导航栏的应用非常的广泛 今天就总结下几种实现的方式 一 Fragment 43 TextView 实现 前面一篇博客在介绍Fragment 的时候就使用了Fragment 43 ImageView 实现了
  • Maven配置阿里云镜像、全局JDK、本地仓库

    Maven配置阿里云镜像 全局JDK 本地仓库 今天刚好有个新入职的同事跟我讨教maven下载jar包的速度问题 xff0c 然后跟他说了一下原因跟配置阿里云镜像 xff0c 下班记录一下 简介 我们在工作中使用maven构建项目时 xff
  • SpringMVC(一)

    SpringMVC 一 xff09 Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架 xff0c 本质上相当于 Servlet 三层架构 表现层 xff1a 负责请求处理和数据展示 业务层
  • mport 做html公共模块导入操作

    name import 做html公共模块导入操作 by haoxiaojun emal mr hao918512 64 126 com on 2016 7 13 https github com mrhaoxiaojun import 引
  • java中反射有什么作用?

    前言 反射blog有很多 xff0c 不再赘述 xff0c 但是反射的作用具体实现场景就会比较少 xff0c 这里举个例子 一个需求 使用参数的方式传入需要执行的类名 xff0c 然后执行相应类的同名方法 普通的实现方法 静态加载 因为需要
  • 解决:本地Kafka和Druid的Zookeeper端口冲突问题

    主要是完成本地的Kafka和Druid搭建过程中 xff0c 出现的Cannot start up because port 2181 is already in use 问题 问题原因 xff1a 使用brew安装的的Druid也是自带z
  • Nginx 反向代理及https配置

    参考代码 在server中添加 location api proxy set header Host host proxy set header X Real IP remote addr proxy set header X Forwar
  • 解决:Scala反射中Boolean等值类型 type mismatch 问题

    描述问题 使用 scala 反射过程中 xff0c 传入为值类型 xff0c 比如Boolean时 xff0c 会出现类型不匹配的情况 type mismatch found Boolean true required Object xxx
  • 将自己的python程序打包成.exe/.app(秀同学一脸呐)

    Windows 10 x64 macOS Sierra 10 12 4 Python 2 7 准备好装哔 了么 xff0c 来吧 xff0c 做个真正意义上的绿色小软件 Win下发布应用 起因 今天实验室同学看到我的乞丐版二输入规则器 xf
  • Python+Selenium+PIL+Tesseract真正自动识别验证码进行一键登录

    Python 2 7IDE Pycharm 5 0 3Firefox浏览器 xff1a 47 0 1Selenium xff1a Selenium的介绍及使用 xff0c 强烈推荐 64 Eastmount的博客PIL Pillow 3 3
  • 解决Selenium弹出新页面无法定位元素问题(Unable to locate element)

    Python 2 7 IDE Pycharm 5 0 3 环境细节详见Python 43 Selenium 43 PIL 43 Tesseract真正自动识别验证码进行一键登录 对于同一页面无法定位元素问题请见姊妹篇解决网页元素无法定位 x

随机推荐