Python 标准库之 JSON

JSON

首先我们参考《维基百科》中的相关内容,来对 JSON 做如下介绍:

JSON ( JavaScript Object Notation ) 是一种由道格拉斯构想设计、轻量级的数据交换语言,以文字为基础,且易于让人阅读。尽管 JSON 是 JavaScript 的一个子集,但 JSON 是独立于语言的文本格式,并且采用了类似 C 语言家族的一些习惯。

关于 JSON 更为详细的内容,可以参考其官方网站,在这我截取部分内容,让大家更好的了解一下 JSON 的结构。

JSON 构建于两种结构基础之上:

“名称/值”对的集合。不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table)等。

值的有序列表。在某些语言中,它被理解为数组(array),类似于 Python 中的类表。

Python 标准库中有 JSON 模块,主要是执行序列化和反序列化功能。

序列化:encoding,把一个 Python 对象编码转化成 JSON 字符串;

反序列化:decoding,把 JSON 格式字符串解码转换为 Python 数据对象。

基本操作

JSON 模块相比于 XML 来说真的是简单多了:

1.encoding:dumps()

encoding 的操作比较简单,请仔细观察一下上面代码中 data 和 data_json 的不同:like 的值从元组变成了列表,其实还有不同,请看下面:

2.decoding:loads()

decoding 的过程其实也像上面那么简单:

上面需要注意的是,解码之后并没有将值中的列表还原为数组。上面的 data 都不是很长,还能凑活着看,如何很长,阅读其实就很有难度了。所以 JSON 的 dumps() 提供了可选的参数,利用它们能在输入上对人更好,当然这个对机器来说都是无所谓的事情。

sort_keys = True 的意思是按照键的字典顺序排序;indent = 2 则是让每个键值对显示的时候,以缩进两个字符对齐,这样的视觉效果就好多了。

大 JSON 字符串

其实如果数据不是很大的话,上面的那些基本操作就足够了。但现在不是都讲究什么都是「大数据」嘛,很多人都在吹嘘自己是大数据,显然不能让 JSON 总是很小。

事实上对于真正的大数据,再大的 JSON 也不够,前面的操作方法是将数据都读入内存,如果数据太大的话就会溢出。那么这个时候该怎么办呢?别怕,我们是 Python 啊,早都想到了,Python 中提供了一个 tempfile 的模块解决此类问题。这里需要注意的是,跟上面已经用过的函数相比是不同的,请仔细观察。

差不多 JSON 就是这些内容了,是不是比起 XML 真的少了很多,也简单了很多?但是简单归简单,内容还是不能小觑的,上面的代码例子什么的,该看看,该在交互模式自己敲一敲就敲一敲,切勿眼高手低。

干货分享

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180921B23Q9M00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券