Python读取json文件

读取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、打开文件并读取内容

Python读取json文件

要读取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)

Python读取json文件

现在,我们已经将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)

Python读取json文件

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字符串写入文件

Python读取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文件,通过这些操作,我们可以方便地在不同的程序和平台之间交换数据。

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构》的官方网站或公开发表的信息,内容仅供参考使用!本站为非盈利性质站点,本着免费分享原则,发布内容不收取任何费用也不接任何广告! 【若侵害到您的利益,请联系我们删除处理。投诉邮箱:i77i88@88.com】

本文链接:http://7707.net/json/20231230764.html

发表评论

提交评论

评论列表

还没有评论,快来说点什么吧~