我的心里只有Python和JSON,以及佩恩!
之所以要掌握JSON数据的处理方式,是因为在WEB开发和爬虫以及一些数据分析任务中,很多数据都是以JSON格式出现。
JSON全称JavaScriptObjectNotation,虽然名字中有JavaScript,但却与其没有什么关系,是一种完全独立于编程语言的数据格式。通俗地讲,JSON就是一种游走在各大编程语言之间的数据格式,我Python可以处理,你JAVA也可以处理,其它编程语言也可以处理。
JSON数据本质上是一堆字符串,属于字符串类型,所以无论你眼前的JSON数据有多么花里胡哨,它归根结底也只是字符串类型。
json.loads()与json.load()
虽然JSON数据是字符串类型,但我们并不会直接用str类型的方法去处理它,而是先使用json.loads()或json.load()方法将其转换成字典或者列表,然后再用字典或列表的方法去处理。
json.loads()方法是将符合JSON长相的str类型数据转换成字典或列表。
下面是转成字典的结果:
下面是转成列表的结果:
其实无论转成字典还是列表,其内核都是字典,也就说即便转成列表,列表中的每个元素也都是字典。在得到字典或列表后,我们就可以使用字典或列表的方法进行处理。
json.load()方法是将JSON文件转换成字典或列表。
比如有一段存放在json文件中的数据,使用notepad++打开,如下:
这里用json.load()方法读取json文件,同时将其转成列表,如下:
json.dumps()与json.dump()
其实我一开始不怎么用到这个功能,直到后来我做WEB开发,需要向前端传送JSON数据,这时候就需要将字典或列表转成JSON数据格式,可使用json.dumps()或json.dump()方法。另外还需要注意的是,如果数据中有中文,需设置参数ensure_ascii=Flase。
json.dumps()方法将具有JSON长相的字典或列表数据转成str类型。
下面是字典转成JSON:
下面是列表转成JSON:
这里我多一句嘴,因为转成了JSON格式,故上面两个结果自然都是str类型,但很多人会误看成字典和列表,这是因为pycham在打印str类型时,会默认将str类型的引号省略。
如何让生成的JSON看上去更清爽?很多人印象中的JSON数据中的键值对是一行一行的,这可以通过设置indent参数,该参数值表示每个键值对在每一行开头有几个缩进,如下:
json.dump()方法将具有JSON长相的字典或列表数据转成JSON文件。
然后我用notepad++打开所生成的json文件,如下: