博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Python爬虫学习笔记6】JSON文件存储
阅读量:5990 次
发布时间:2019-06-20

本文共 2648 字,大约阅读时间需要 8 分钟。

JSON简介

JSON(全称JavaScript Obejct Notation,JavaScript对象标记),基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式,通过对象和数组的组合来表示数据,构造方法简洁且其结构化程度高,是一种轻量级的数据交换格式。

在JSON中,支持很多数据类型,包括有对象、数组、整型、浮点型、布尔型、NULL类型以及字符串类型(由于是JSON基于ES,在python中,字符串必须要用双引号,不能用单引号),而这些多个数据之间使用逗号分开。不过从本质上来说,JSON就是一个字符串。

在这些所支持的数据类型里,对象和数组是比较特殊且常用的两种类型:

对象:在JavaScript中使用花括号{}包裹起来的内容,数据结构为{key:value…}的键值对结构,类似于python中的字典。

数组:在JavaScript中使用方括号[]包裹起来的内容,数据结构为[element1,element2…]的索引结构,类似于python中的列表。

JSON可以由以上两种形式自由组合而成,并且可以无限次嵌套,是数据交换的极佳方式。

例如,一个JSON对象可以写为如下形式:

[{

         "username":"UnikFox",
         "age":20,
         "country":"China"
},{
         "username":"Luna",
         "age":16,
         "country":"Britain"
}
]

为方便查看JSON数据,我们可以借助一个专门用于解析JSON数据的网址(),将我们所要解析的JSON文本复制到左边的输入框,右边的显示框便会动态实时格式化显现,同时还能检查输入的文本是否符合JSON语法并给出提示。

JSON数据的写入和读取

在python中,我们可以很轻松地使用内置的json库来完成对JSON数据的相关操作。常用的操作是写入和读取,接下来我们对此分别进行介绍。

在此之前,我们先来做一些准备工作。

#导入json库import json#设置一个用于JSON对象操作的列表persons = [    {        'username':'UnikFox',        'age':20,        'country':'China'    },    {        'username':'Luna',        'age':16,        'country':'Britain'    }]

1.JSON数据的写入

json库中提供了dumps()和dump()两种方法来进行数据写入,其中前者适用于将python对象转化为JSON字符串,而后者则可以将python对象写入json文件。

##json库写入操作# 利用dumps()方法将python对象转化为json字符串json_str = json.dumps(persons)print(type(json_str))    #
print(json_str) #[{"username": "UnikFox", "age": 20, "country": "China"}, {"username": "Luna", "age": 16, "country": "Britain"}]# 利用dump()方法将python对象存储到json文件中with open('person.json','w',encoding='utf-8') as fp: json.dump(persons,fp,ensure_ascii=False)

这里要说明的地方有两处:1.有时候我们的字符串为中文,因此在打开文件时需要设置编码encoding;2.json文件的写入默认为Unicode编码,在写入数据后会自动转化为unicode字符,为方便中文的显示,我们需要关闭其默认编码’ensure_ascii=False’。

person.json文件内容(这里我们可以看到,json写入时自动地帮我们格式化了数据,将原本地单引号转化为了双引号)

[{"username": "UnikFox", "age": 20, "country": "China"}, {"username": "Luna", "age": 16, "country": "Britain"}]

2.JSON数据的读取

和写入操作类似,json库提供了loads()和load()两种方法,前者为从JSON字符串转化为python对象,而后者则是从文件中获取python对象。

##json库读取操作# 使用loads()方法将json字符串转化为python对象json_str = '[{"username": "UnikFox", "age": 20, "country": "China"}, {"username": "Luna", "age": 16, "country": "China"}]'persons = json.loads(json_str)print(persons)    #[{"username": "UnikFox", "age": 20, "country": "China"}, {"username": "Luna", "age": 16, "country": "Britain"}]# 利用load()方法从json文件中读取数据并存储为python对象with open('person.json','r',encoding='utf-8')as fp:    persons = json.load(fp)    print(type(persons))    #
print(persons) #[{'username': 'UnikFox', 'age': 20, 'country': 'China'}, {'username': 'Luna', 'age': 16, 'country': 'Britain'}]

 


以上便是有关JSON文件存储的简单介绍和基本使用,更详细的内容可以参考官方文档:

转载于:https://www.cnblogs.com/Unikfox/p/9690476.html

你可能感兴趣的文章
poj3683(2-SAT 求任意方案)
查看>>
我的wordpress插件总结
查看>>
转 C++常用的类库
查看>>
如何指定rman下的备份路径
查看>>
设置U盘为第一启动顺序
查看>>
分块读取Blob字段数据(Oracle)
查看>>
CentOS6.4 安装Nagios 并监控端口
查看>>
我的架构截图~永久更新中...
查看>>
python异常处理(基础)
查看>>
〖Linux〗apt-get wait for another apt process
查看>>
[CLR via C#]5.2 引用类型和值类型
查看>>
统计--追踪数据更新情况
查看>>
js 日期相差的天数
查看>>
网络IPC:套接字之带外数据
查看>>
Java动态编程初探——Javassist
查看>>
SocketAsyncEventArgs使用解说
查看>>
大前端晋级系列之-单一职责原则
查看>>
线程间同步之 semaphore(信号量)
查看>>
C#程序运行流程
查看>>
织梦(dedecms) 5.7 /plus/car.php sql注入0day
查看>>