【Python】json文件的读取

本文章已经生成可运行项目,


在这里插入图片描述

1. json简介

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于将结构化数据进行传输和存储。它基于JavaScript语法,但可以被多种编程语言解析和生成。

json 基于文本,独立于语言的轻量级的数据交换格式

  • 基于文本,是一个文本文件,不能包含图片,音视频等
  • 独立于语言,不是某个语言特有的,每种编程语言都可以使用的
  • 轻量级,相同的数据,和其他格式相比,占用的大小比较小
  • 数据交换格式,后端程序员 给前端的数据 (json,xml,ProtoBuf等)

JSON具有广泛的应用,尤其在Web开发中常用于API的数据交互。在许多编程语言中,都有内置的JSON解析器和生成器,可以方便地处理JSON数据。

2.json的使用规范

JSON使用键值对的方式表示数据,其中键是字符串,值可以是字符串、数字、布尔值、对象、数组或null。

JSON的一些基本规则:

  1. 键和值之间使用冒号(:)分隔。
  2. 键值对之间使用逗号(,)分隔。
  3. 数据包裹在大括号({})中表示一个对象。
  4. 数组使用方括号([])表示,其中的元素可以是任意类型的数据,用逗号分隔。
  5. json中的字符串必须使用双引号 ""
  6. json文件的后缀名是 .json
  7. 一个json文件对应一个对象或数组

3.json文件的书写

一个简单的JSON示例:

{
    "name": "zhangsan",
    "age": 20,
    "city": "BeiJing",
    "hobbies": ["reading", "running", "playing guitar"]
}

在这里插入图片描述
在上面的示例中,有一个包含个人信息的对象。它包含名称、年龄、所在城市、爱好数组
注意:
不能在一个json文件中定义两个json

在这里插入图片描述
如果想要在一个json文件中定义多个json,需要使用数组,如下:
在这里插入图片描述

4.json文件的读取

使用python读取json文件分为三步:

  1. 导包
  2. 读打开文件
  3. 读文件

在此之前,先使用普通文件的读取方式进行读取:

with open("info.json",'r',encoding='UTF-8') as f:
    buf = f.read()
    print(type(buf))
    print(buf)

在这里插入图片描述
此处返回的结果是 字符串,在字符串中获取json中的键值对的信息是比较困难的.

不过在python中的json包中提供了一个json.load()方法

import json

with open("info.json",'r',encoding='UTF-8') as f:
    result = json.load(f)
    print(type(result))
    print(result)

在这里插入图片描述
可以看到返回值类型变成了 dict(字典),python字典中的数据也是键值对,因此要获取对应的数据也就很方便了

  1. 使用方括号操作符[key]:可以使用字典的key作为索引来获取对应的value。
  2. 使用get()方法:get()方法可以接收一个key参数,并返回对应的value。如果key不存在,则可以指定一个默认值作为get()方法的第二个参数,如果不指定,默认值为None。

在这里插入图片描述
在这里插入图片描述

本文章已经生成可运行项目
### 如何使用Python读取和解析JSON文件Python中,可以通过内置的`json`模块实现对JSON文件读取和解析操作。以下是具体的操作方式以及示例代码。 #### 使用 `with open()` 方法读取 JSON 文件 通过 `open()` 函数以只读模式 (`'r'`) 打开目标 JSON 文件,并利用 `json.load()` 将其内容转换为 Python 字典或列表形式[^2]: ```python import json # 打开并读取JSON文件 with open('data.json', 'r', encoding='utf-8') as file: data = json.load(file) # 输出解析后的数据 print(data) ``` 此代码片段展示了如何安全地处理文件资源,确保即使发生异常也能自动关闭文件流[^2]。 #### 从字符串加载 JSON 数据 如果 JSON 数据存储在一个字符串而非文件中,则可采用 `json.loads()` 来完成解析工作[^3]: ```python import json # 假设这是来自某个API响应或其他源的一个JSON字符串 json_string = '{"name": "Alice", "age": 25, "city": "New York"}' # 转换为Python字典 parsed_data = json.loads(json_string) # 访问其中的内容 print(parsed_data['name']) # 输出 Alice ``` 对于更复杂的嵌套结构或者大数据集的情况,同样适用上述方法进行逐层访问或迭代查询所需字段值[^4]。 #### 提取特定键对应的值 (针对复杂JSON结构) 当面对具有深层嵌套关系的大规模JSON文档时,可能需要定位某些特定节点下的子项集合及其属性信息。下面给出了一段示范程序用于收集所有问题ID(`problem_id`)至列表当中[^4]: ```python #!/usr/bin/env python # -*- coding=utf-8 -*- import json f = open("data", "r", encoding="UTF-8").read() f = json.loads(f) probleidList = [] for i in f.get("data").get("problems"): probleid = i.get("problem_id") probleidList.append(probleid) print(probleidList) print(len(probleidList)) ``` 这段脚本首先整体载入整个JSON对象成为内存中的Python表示形式;接着按照预定义逻辑逐一检索各个条目下关联的关键标识符——即这里的题目编号(problem ID),最后统计总数并打印出来作为最终结果展示给用户查看确认无误即可。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

比奇堡的天没有云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值