前言

最近在学习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到底怎么用?相关推荐

  1. 在python中使用json格式存储数据

    在python中使用json格式存储数据 代码如下: import jsonlist1 = [{'A': [1, 2, 3, 4, 5, 6], 'B': [3, 4, 5, 6, 7]},{'C': ...

  2. 详解Python中的JSON以及在Python中使用JSON

    首先什么是JSON? JSON(JavaScript Object Notation, JS 对象简谱,即JavaScript对象表示法) 是一种用于表示结构化数据的流行数据格式.      在服务器 ...

  3. python中字典和json的区别_详解python中的json和字典dict

    定义 python中,json和dict非常类似,都是key-value的形式,而且json.dict也可以非常方便的通过dumps.loads互转.既然都是key-value格式,为啥还需要进行格式 ...

  4. python中mod是什么意思_【python中,mod_python到底做了些什么呢?】mod python 教程

    python 编程小白 ,不会用doctest 请大神指教怎么用!! >>> >>> def is_between(v, lower, higher): ...   ...

  5. Python 中的json模块dumps参数详解

    1.什么是JSON 维基百科中的定义: JSON(JavaScript Object Notation,JavaScript对象表示法)是一种由道格拉斯·克罗克福特构想和设计.轻量级的资料交换语言,该 ...

  6. python json方法详解_详解python中的json的基本使用方法

    在Python中使用json的时候,主要也就是使用json模块,json是以一种良好的格式来进行数据的交互,从而在很多时候,可以使用json数据格式作为程序之间的接口. #!/usr/bin/env ...

  7. 在Python中,json.jumps无法直接转译datetime类型的值

    python中,json.jumps无法直接转译datetime类型的值. 最简便的方法可以通过下面这个: json.dumps(results, indent=4, sort_keys=True, ...

  8. python json loads_如何区别python中的json模块loads和load方法

    在python中的json模块,有一对方法load()和loads(),其中load()方法是从json文件读取json,而loads()方法是直接读取json,两者都是将字符串json转换字典对象. ...

  9. Python中的JSON简介

    您知道如何从在线API传输数据或将不同类型的数据存储到本地计算机吗?无论以何种方式,您都会沉浸在JSON中,JSON代表[Java Script Object Notation].它是一种著名的流行数 ...

最新文章

  1. android单线字体,Android自定义字体
  2. java 中遍历目录下所有文件
  3. anguarjs 上传图片预览_MIUI12 20.10.29更新,新版「模糊预览图」
  4. 【算法基础】常用的数据结构与算法
  5. 评估应用使用oracle磁盘空间,Oracle磁盘空间使用统计
  6. 从零开始的全栈工程师——underscore
  7. Apache ActiveMQ消息中间件的基本使用
  8. 全局变量在多个进程中不共享
  9. 91手机助手官网iPhone版 v5.6.1 官方版
  10. spyder安装pyqt5
  11. bt和wifi的共存
  12. 入秋的第一篇数据结构算法:看看归并与快排的风采,三面蚂蚁金服成功拿到offer
  13. 英译汉文章在线翻译器:批量翻译、素材收集、图片处理
  14. Java毕业设计-公交路线查询管理系统
  15. android雪花飘落效果,【OpenGL】Shader实例分析(七)- 雪花飘落效果
  16. ChinaSoft 论坛巡礼 | 编译器与编程语言
  17. PCIe四通道光纤数据传输板PCIe-Fib-4Ch5G
  18. Bugku:杂项 猫片(安恒)
  19. matlab里如何输入圆周,用MATLAB实现序列的圆周卷积
  20. php生鲜超市系统,毕业论文:基于PHP平台下的Ajax开发实践—网上生鲜超市系统的开发...

热门文章

  1. c语言一串大写字母转小写,C语言的基础函数大小写转换
  2. php根据单词截取英文语句,php按单词截取字符串的方法
  3. 用友二次开发_详解ERP系统与MES系统的数据传递——永康用友
  4. 时间序列:简易prophet
  5. 自制操作系统学习笔记(3)-INT 0x10软中断显示字符串
  6. 【CV】大神没交棒,但YOLOv5来了!
  7. 【算法漫画】什么是红黑树?
  8. WWW2020推荐系统论文合集(已分类整理,并提供下载)
  9. 常见概率分布的Matplotlib实现
  10. 深度学习笔记 第四门课 卷积神经网络 第四周 特殊应用:人脸识别和神经风格转换...