
01
引言
在本文中,我们将学习如何使用Python读取、解析和编写JSON文件。
我们将讨论如何最好地处理简单的JSON文件以及嵌套的JSON文件,当然我们也将讨论如何访问Json文件数据中的特定位置的值。
02
什么是JSON文件
需要注意的是,JSON格式通常是由key:<value> 结对组成,其中key是字符串形式,value是字符串、数字、布尔值、数组、对象或null。
03
将JSON文件读取为字典类型
首先我们需要导入 json库, 接着我们使用open函数来读取JSON文件,最后利用json.load()函数将JSON字符串转化为Python字典形式.
就这么简单,代码如下:
import jsonwith open('superheroes.json') as f:superHeroSquad = json.load(f)print(type(superHeroSquad)) # Output: dictprint(superHeroSquad.keys())
上述代码很简单很直观啦,唯一需要注意的是json库中有load()和loads()两个函数.
函数load()作用为读取JSON文件生成Python对象
函数loads()作用为读取JSON 字符串流生成Python对象
我们可以将loads()函数中的字符s的含义理解成 load for strings.
04
将JSON读取为Pandas类型
当然我们也可以使用Pandas库中的read_json函数来读取对应的JSON文件,
import pandas as pddf = pd.read_json('superheroes.json')
运行结果如下:

需要注意的是使用Pandas库不仅仅可以读取电脑本地磁盘上的JSON文件,也可以通过URL读取网络上存放的文件.
代码如下:
df1 = pd.read_json('https://mdn.github.io/learning-area/javascript/oojs/json/superheroes.json')
05
读取嵌套JSON
我们有时候遇到的JSON文件是嵌套的,这经常会让读取工作变得有些困难. 其实嵌套JSON和Python中的嵌套字典思想类似,即字典中嵌套字典.
我们观察上述例子中的member字段,其值也为字典类型,下图中我们使用缩进来展示嵌套结构。

设想一下,当我们将JSON文件加载到Pandas数据框架中时,members列如下所示。每行包含一个字典。

接下来,我们在members这一列上使用apply方法,将members这一列拆分为多个子列,代码如下:
df['members'].apply(pd.Series)
上述代码执行后,members列会被拆分为4个新列,如下所示:

06
访问特定位置的数据
在Python中我们可以通过Key的名字或者下标来访问JSON文件中任意位置的数据。

为了得到这个值,我们可以直接使用以下语句:
superHeroSquad['members'][1]['secretIdentity']
细心的同学可能已经注意到,我在上面的JSON片段中突出显示了两个蓝色的值。希望感兴趣的同学们可以作为练习来尝试访问这些值。
07
导出JSON
让我们编辑一下我们最后一位超级英雄,将其secretIdentit从'Unknow'更改为'Will Smith',接着将这个字典导出为JSON文件。
这里我们将使用json.dump()函数将字典写入文件。
#update secret identity of Eternal FlamesuperHeroSquad['members'][2]['secretIdentity'] = 'Will Smith'with open('superheroes.json', 'w') as file:json.dump(superHeroSquad, file)
08
格式化输出

with open('superheroes.json', 'w') as file:json.dump(superHeroSquad, file, indent = 4)
09
总结
本文实现了利用Python实现了读取JSON的相关操作,主要包括读取JOSN文件读取为Python对象,访问JSON特定位置的值,格式化输出JSON对象等,并给出了完整代码示例。
您学废了吗?
关注公众号,后台回复 json 即可获取完整代码。

