json模块使用总结——Python
# 原创文章,未经允许请勿转载
通过Python的json模块,可以将字符串形式的json数据转化为字典,也可以将Python中的字典数据转化为字符串形式的json数据。
之前使用这个模块时,都是随用随查,浅尝辄止,对模块的功能了解不深。
随着使用次数的增加,我对这个功能完善的模块有了更多的了解,记录如下。
1、json字符串转为字典
json.load / json.loads
两个方法功能类似,可选参数也相同,最大的区别在于,json.load方法接受的输入,即第一个参数,是包含json数据的文件对象,如open方法的返回对象,
json.loads接受的输入是json字符串,而非文件对象。从输入类型的区别也可以看出两者的使用场合。
可选参数包括是否需要转换整型、浮点型等数值的参数,还有一些复杂的功能,暂时没有用到,以后有机会再了解。
2、字典转换为json
json.dump / json.dumps
对应于load和loads,dump的第一个参数是对象字典,第二个参数是文件对象,可以直接将转换后的json数据写入文件,dumps的第一个参数是对象字典,其余都是可选参数。dump和dumps的可选参数相同,这些参数都相当实用,现将用到的参数记录如下:
ensure_ascii 默认为True,保证转换后的json字符串中全部是ascii字符,非ascii字符都会被转义。如果数据中存在中文或其他非ascii字符,最好将ensure_ascii设置为False,保证输出结果正常。
indent 缩进,默认为None,没有缩进,设置为正整数时,输出的格式将按照indent指定的半角空格数缩进,相当实用。
separators 设置分隔符,默认的分隔符是(',', ': '),如果需要自定义json中的分隔符,例如调整冒号前后的空格数,可以按照(item_separator, key_separator)的形式设置。
sort_keys 默认为False,设为True时,输出结果将按照字典中的key排序。
>>> import json
>>> a = {}
>>> a[''] = 2
>>> a['ad'] = 'ertwer'
>>> a[''] = 'oierte'
>>> a[2] = [1, 'a']
>>> a['non_ascii'] = "青团 》 熊猫 ?"
>>> a['ss'] = a.copy()
>>> print(json.dumps(a)) # 默认参数输出,无缩进,中文字符都被转义
{"": [1, "a"], "": "oierte", "ss": {"ad": "ertwer", "": [1, "a"], "": "oierte", "": 2, "non_ascii": "\u9752\u56e2 \u300b \u718a\u732b \uff1f"}, "": 2, "ad": "ertwer", "non_ascii": "\u9752\u56e2 \u300b \u718a\u732b \uff1f"}
>>>
>>> print(json.dumps(a, ensure_ascii=False, indent=4)) # 四空格缩进,中文字符全部正常
{
"": [
1,
"a"
],
"": "oierte",
"ss": {
"ad": "ertwer",
"": [
1,
"a"
],
"": "oierte",
"": 2,
"non_ascii": "青团 》 熊猫 ?"
},
"": 2,
"ad": "ertwer",
"non_ascii": "青团 》 熊猫 ?"
}
>>>
json模块使用总结——Python的更多相关文章
- Python开发之序列化与反序列化:pickle、json模块使用详解
1 引言 在日常开发中,所有的对象都是存储在内存当中,尤其是像python这样的坚持一切接对象的高级程序设计语言,一旦关机,在写在内存中的数据都将不复存在.另一方面,存储在内存够中的对象由于编程语言. ...
- python的json模块
Python JSON 本章节我们将为大家介绍如何使用 Python 语言来编码和解码 JSON 对象. 环境配置 在使用 Python 编码或解码 JSON 数据前,我们需要先安装 JSON 模块. ...
- 解决python中json模块loads出来的结构都是unicode的问题
在使用python的json模块对json字串反序列化成python对象的时候出现的字符串都是unicode类型,而不是python内置的str类型.在某种使用场景下用户必须做显式的转换才能正常使用, ...
- Python 第三篇(上):python文件基础操作、json模块、lambda、map、filter、reduce和函数位置参数
python一切皆对象,linux一切皆文件,python操作文件是很常见的O/I操作,其内置来open()函数可以完成文件的基本操作: 一:使用内置open()函数操作文件,基本语法如下: with ...
- Python 之 json 模块
引言 对于做web开发的人来说,json文本必须要熟知与熟练使用的.大部分网站的API接口调用返回的数据,就是json格式的.如果看json对象所包含的内容,相信对熟悉Python的人开说,很快就能把 ...
- 【python标准库模块四】Json模块和Pickle模块学习
Json模块 原来有个eval函数能能够从字符串中提取出对应的数据类型,比如"{"name":"zhangsan"}",可以提取出一个字典. ...
- Python 3 中的json模块使用
1. 概述 JSON (JavaScript Object Notation)是一种使用广泛的轻量数据格式. Python标准库中的json模块提供了JSON数据的处理功能. Python中一种非常常 ...
- Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式
Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式 目录 Pycharm使用技巧(转载) Python第一天 安装 shell 文件 Py ...
- Python函数参数&time、OS、json模块
##可变参数 PORT = 3306 #常量 def mysql(host,user,password,port,charset,sql,db): print('连接mysql') # mysql(' ...
随机推荐
- CToolBarCtrl基本内容控件
基本内容CToolBarCtrl CObject └CCmdTarget └CWnd └CToolBarCtrl CToolBarCtrl类提供了Windows工具条通用控件的性能.这个控件(也就是C ...
- Jmeter--JDBC请求(sqlserver)
做JDBC请求,首先要了解这个JDBC对象是什么,然后寻找响应的数据库连接URL和数据库驱动. 数据库URL:jdbc:sqlserver://200.99.197.190:1433;database ...
- 友盟分享——Android App接入微信开放平台注意事项
一.Android第三方应用接入微信开放平台的注意事项: 1. 到微信开放平台官网申请正式的AppID(需通过审核),要填写包名.app签名的md5值.至于如何获取app签名信息,官方提供签名包apk ...
- HDU 1018Big Number(大数的阶乘的位数,利用公式)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1018 Big Number Time Limit: 2000/1000 MS (Java/Others) ...
- OC和C语言比较
说明:比较记忆相对来说更容易熟练记得牢固,理解了C语言相对来说OC也不太难,OC是C语言的扩展,向下兼容C语言. 源文件后缀名比较 1.C语言源文件 .h:头文件 .c:源文件 .o:目标文件 .ou ...
- Tag It 一款 Jquery控件,当你在文本框中输入逗号时,自动帮你分隔开相关内容
Demo地址:http://webspirited.com/tagit/ 使用方法: 除了JQuery脚本外,下面的脚本也是必须的,这些脚本你都可以去GitHub下载:https://github.c ...
- C#发送邮件类库
public class Email { #region 发送邮件 /// <summary> /// 发送邮件 /// </summary> /// <param na ...
- java 编写小工具 尝试 学习(三)
1.在 新建的 窗口上 添加 按钮 ,不废话 ,贴代码和 截图 package jFrameDemo; import java.awt.event.ActionEvent; import jav ...
- iOS之estimatedHeightForRowAtIndexPath避免程序EXC_BAD_ACCESS
在你的项目中把estimatedHeightForRowAtIndexPath方法写实现以下,返回一个估计高度(随便估,笔者建议还是按照正常思路来写,大概高度是多少就返回多少),这样就不会报EXC_B ...
- 自己花了2天时间,重新整理了个全面的vue2的模板
自己花了2天时间,重新整理了个全面的vue2的模板,基本vue中需要的部分都整理封装好了,希望大家喜欢^ ^.欢迎大家star或者fork呀~,https://github.com/qianxiaon ...