读取JSON文件是我们在处理数据时经常需要进行的操作,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成,在Python中,我们可以使用内置的json模块来读取和写入JSON文件。
我们需要了解JSON文件的基本结构,JSON文件由键值对组成,每个键值对之间用逗号分隔,整个JSON对象用大括号包围,键值对中的键必须是字符串,而值可以是字符串、数字、布尔值、数组或其他JSON对象。
{ "name": "张三", "age": 30, "is_student": false, "courses": ["math", "english", "computer science"], "address": { "city": "北京", "street": "朝阳路" } }
接下来,我们将介绍如何在Python中读取JSON文件。
1、打开文件并读取内容
要读取JSON文件,我们首先需要使用open()
函数以读取模式打开文件,我们可以使用read()
方法读取文件的全部内容,这里需要注意的是,由于JSON文件中可能包含换行符,因此在读取文件内容后,我们需要使用strip()
方法去除换行符。
with open('example.json', 'r', encoding='utf-8') as file: content = file.read().strip()
2、将JSON字符串转换为Python对象
读取到文件内容后,我们需要将其转换为Python对象,为此,我们可以使用json.loads()
函数,这个函数接受一个JSON字符串作为参数,并返回一个对应的Python对象。
import json data = json.loads(content)
现在,我们已经将JSON文件的内容转换为了Python对象,我们可以像操作普通的Python对象一样操作这个对象,我们可以访问其属性和方法:
print(data['name']) # 输出:张三 print(data['age']) # 输出:30 print(data['is_student']) # 输出:False print(data['courses']) # 输出:['math', 'english', 'computer science'] print(data['address']['city']) # 输出:北京 print(data['address']['street']) # 输出:朝阳路
3、遍历JSON对象
如果我们需要遍历JSON对象中的所有键值对,可以使用for
循环,我们可以遍历courses
列表:
for course in data['courses']: print(course)
4、将Python对象转换回JSON字符串
如果我们需要将Python对象转换回JSON字符串,可以使用json.dumps()
函数,这个函数接受一个Python对象作为参数,并返回一个对应的JSON字符串,为了确保结果字符串的格式正确,我们需要设置indent
参数为一个非负整数,表示缩进的空格数,我们还可以使用ensure_ascii=False
参数来避免中文字符被转义。
json_string = json.dumps(data, ensure_ascii=False, indent=4) print(json_string)
5、将JSON字符串写入文件
我们可以将JSON字符串写入一个新的文件,为此,我们可以使用open()
函数以写入模式打开文件,并使用write()
方法将字符串写入文件,这里需要注意的是,由于JSON字符串中可能包含换行符和制表符,因此在写入文件前,我们需要使用replace()
方法去除这些特殊字符。
with open('output.json', 'w', encoding='utf-8') as file: file.write(json_string.replace(' ', '').replace('\t', ''))
至此,我们已经介绍了如何在Python中读取和写入JSON文件,通过这些操作,我们可以方便地在不同的程序和平台之间交换数据。