python中的JSON到底怎么用?
前言
最近在学习python爬虫,在对数据进行持久化存储的时候,会选择使用json格式的数据进行存储,由此就引发了一个问题,python中的JSON库到底咋用?
以前使用JavaScript中Json.stringfy和Json.parse倒是用的飞起。
到了python中使用json库就不会用了,这不行!!!
必须解决这个问题,由此,经过学习后,就产生了下文。
内容
简介
JSON是一种轻量级的数据交换格式。
核心方法
python中的json库核心方法只有4个
- json.dump
- json.dumps
- json.load
- json.loads
dump在计算机英语中是 转存、导出、保存 的意思
那么就很好理解了。
dumps ,拆解开来,dump string , 转化为字符流的数据
现在,我们来看一段代码:
dic = {'name': 'tom',"age": 18,"friends": ('mick','jerry'),'text': 'hello world'}# obj --> jsonres = json.dumps(dic)print(res)# 结果:# {"name": "tom", "age": 18, "friends": ["mick", "jerry"], "text": "hello world"}
json中字符串对应的使用的是双引号,所以 python中的 ‘name’ 变成了 “name”
python中tuple对应的是json中的arr,所以出现了以下变化,( ‘mick’, ‘jerry’ ) — >[“mick”, “jerry”]
那么接下来我们试试dump的操作。
dump的操作实现的功能是将python对象转化成json数据并存储到文件中。
dic = {'name': 'tom',"age": 18,"friends": ('mick','jerry'),'text': 'hello world'}fp = open('./dic.json', 'w', encoding='utf-8')# obj --> json 并且将json写入文件json.dump(dic, fp, ensure_ascii=False)# fp = file place 作用是指定文件位置和读写方式
运行这段代码后,自然就会生成 dic.json的文件,内容如下所示
load的含义是加载,通过上面的学习,可以以此类推 load 和 loads方法。
dump , 将python对象转换成json数据,并向文件中保存json数据。
load,从文件中读取json数据,并转化成python对象。
dumps,python字符流转化成 json数据流, 简单的讲,python obj — > json
loads, json数据流 加载成python字符流,简单的讲,json—> python obj
下面是一组实例:
使用json.loads方法:
# 这是一个json格式的字符串json_text = '{"name": "tom", "age": 18, "friends": ["mick", "jerry"], "text": "hello world"}'# loads = load from stringres = json.loads(json_text)print(res)# 结果:{'name': 'tom', 'age': 18, 'friends': ['mick', 'jerry'], 'text': 'hello world'}print(type(res))# 结果: <class 'dict'>
使用json.load方法:
fp = open('./dic.json', 'r', encoding='utf-8')# 从文件中读取json数据res = json.load(fp)print(res)# 结果:{'name': 'tom', 'age': 18, 'friends': ['mick', 'jerry'], 'text': 'hello world'}print(type(res))# 结果:<class 'dict'>
dic.json数据如下:
总结
可以简单的理解,loads, 加了s就是从字符流中加载,不加s就是从文件流中加载。
所以json.load(fp) , 第一个参数fp指定的是文件的位置,同时fp是必传参数,不传就报错。
dump和dumps同理。
特别注意:
需要特别注意的是dump在对中文进行保存的时候,中文会被默认转化成unicode编码
fp = open('./dic.json', 'w', encoding='utf-8')# 张三 --- > "\u5f20\u4e09" 默认中文会被转化成Unicode编码dic = {'name': '张三','age': 18}json.dump(dic, fp)
运行后,可以明显感受到 中文变成了Unicode编码,解决办法。
添加关键词,ensure_ascii=False ,这样就不会自动转化成Unicode编码了。
fp = open('./dic.json', 'w', encoding='utf-8')# 张三 --- > "\u5f20\u4e09" 默认中文会被转化成Unicode编码dic = {'name': '张三','age': 18}# 这里加了 ensure_ascii=Falsejson.dump(dic, fp, ensure_ascii=False)
此时中文就能正常显示了。
附1:python和json对照表
python中的JSON到底怎么用?相关推荐
- 在python中使用json格式存储数据
在python中使用json格式存储数据 代码如下: import jsonlist1 = [{'A': [1, 2, 3, 4, 5, 6], 'B': [3, 4, 5, 6, 7]},{'C': ...
- 详解Python中的JSON以及在Python中使用JSON
首先什么是JSON? JSON(JavaScript Object Notation, JS 对象简谱,即JavaScript对象表示法) 是一种用于表示结构化数据的流行数据格式. 在服务器 ...
- python中字典和json的区别_详解python中的json和字典dict
定义 python中,json和dict非常类似,都是key-value的形式,而且json.dict也可以非常方便的通过dumps.loads互转.既然都是key-value格式,为啥还需要进行格式 ...
- python中mod是什么意思_【python中,mod_python到底做了些什么呢?】mod python 教程
python 编程小白 ,不会用doctest 请大神指教怎么用!! >>> >>> def is_between(v, lower, higher): ... ...
- Python 中的json模块dumps参数详解
1.什么是JSON 维基百科中的定义: JSON(JavaScript Object Notation,JavaScript对象表示法)是一种由道格拉斯·克罗克福特构想和设计.轻量级的资料交换语言,该 ...
- python json方法详解_详解python中的json的基本使用方法
在Python中使用json的时候,主要也就是使用json模块,json是以一种良好的格式来进行数据的交互,从而在很多时候,可以使用json数据格式作为程序之间的接口. #!/usr/bin/env ...
- 在Python中,json.jumps无法直接转译datetime类型的值
python中,json.jumps无法直接转译datetime类型的值. 最简便的方法可以通过下面这个: json.dumps(results, indent=4, sort_keys=True, ...
- python json loads_如何区别python中的json模块loads和load方法
在python中的json模块,有一对方法load()和loads(),其中load()方法是从json文件读取json,而loads()方法是直接读取json,两者都是将字符串json转换字典对象. ...
- Python中的JSON简介
您知道如何从在线API传输数据或将不同类型的数据存储到本地计算机吗?无论以何种方式,您都会沉浸在JSON中,JSON代表[Java Script Object Notation].它是一种著名的流行数 ...
最新文章
- android单线字体,Android自定义字体
- java 中遍历目录下所有文件
- anguarjs 上传图片预览_MIUI12 20.10.29更新,新版「模糊预览图」
- 【算法基础】常用的数据结构与算法
- 评估应用使用oracle磁盘空间,Oracle磁盘空间使用统计
- 从零开始的全栈工程师——underscore
- Apache ActiveMQ消息中间件的基本使用
- 全局变量在多个进程中不共享
- 91手机助手官网iPhone版 v5.6.1 官方版
- spyder安装pyqt5
- bt和wifi的共存
- 入秋的第一篇数据结构算法:看看归并与快排的风采,三面蚂蚁金服成功拿到offer
- 英译汉文章在线翻译器:批量翻译、素材收集、图片处理
- Java毕业设计-公交路线查询管理系统
- android雪花飘落效果,【OpenGL】Shader实例分析(七)- 雪花飘落效果
- ChinaSoft 论坛巡礼 | 编译器与编程语言
- PCIe四通道光纤数据传输板PCIe-Fib-4Ch5G
- Bugku:杂项 猫片(安恒)
- matlab里如何输入圆周,用MATLAB实现序列的圆周卷积
- php生鲜超市系统,毕业论文:基于PHP平台下的Ajax开发实践—网上生鲜超市系统的开发...
热门文章
- c语言一串大写字母转小写,C语言的基础函数大小写转换
- php根据单词截取英文语句,php按单词截取字符串的方法
- 用友二次开发_详解ERP系统与MES系统的数据传递——永康用友
- 时间序列:简易prophet
- 自制操作系统学习笔记(3)-INT 0x10软中断显示字符串
- 【CV】大神没交棒,但YOLOv5来了!
- 【算法漫画】什么是红黑树?
- WWW2020推荐系统论文合集(已分类整理,并提供下载)
- 常见概率分布的Matplotlib实现
- 深度学习笔记 第四门课 卷积神经网络 第四周 特殊应用:人脸识别和神经风格转换...