## Python 解析 JSON
简介
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,广泛应用于网络数据传输和数据存储。Python 提供了内置的 `json` 模块,方便地进行 JSON 数据的解析和生成。本文将详细介绍 Python 如何解析 JSON 数据,包括基本类型、嵌套结构以及处理错误等方面。### 1. 导入 `json` 模块首先,需要导入 `json` 模块:```python import json ```### 2. 解析 JSON 字符串`json.loads()` 函数用于将 JSON 字符串解析为 Python 对象。 JSON 字符串中的数据会被转换成相应的 Python 数据类型:
`"string"` -> `str`
`123` -> `int`
`123.45` -> `float`
`true` -> `True`
`false` -> `False`
`null` -> `None`
`[]` -> `list`
`{}` -> `dict`
示例:解析简单的 JSON 字符串
```python
json_string = '{"name": "John Doe", "age": 30, "city": "New York"}'
data = json.loads(json_string)print(type(data)) # Output:
示例:解析 JSON 文件
假设有一个名为 `data.json` 的文件,内容如下:```json {"name": "Jane Doe","age": 25,"address": {"street": "123 Main St","city": "Los Angeles"} } ```Python 代码:```python import jsonwith open('data.json', 'r') as f:data = json.load(f)print(data["name"]) # Output: Jane Doe print(data["address"]["city"]) # Output: Los Angeles ```### 4. 处理嵌套 JSON 结构`json.loads()` 和 `json.load()` 都能轻松处理嵌套的 JSON 结构。 通过键值对访问即可获取嵌套数据。
示例:处理嵌套 JSON
```python json_string = """ {"users": [{"id": 1, "name": "Alice"},{"id": 2, "name": "Bob"},{"id": 3, "name": "Charlie"}] } """data = json.loads(json_string)for user in data["users"]:print(f"ID: {user['id']}, Name: {user['name']}") ```### 5. 处理 JSON 解析错误如果 JSON 字符串或文件格式不正确,`json.loads()` 和 `json.load()` 会抛出 `json.JSONDecodeError` 异常。 可以使用 `try...except` 块来处理这些错误。
示例:处理 JSONDecodeError
```python import jsonjson_string = "{invalid json}"try:data = json.loads(json_string) except json.JSONDecodeError as e:print(f"Error decoding JSON: {e}") ```### 6. 生成 JSON 数据`json.dumps()` 函数用于将 Python 对象转换为 JSON 字符串。`json.dump()` 函数用于将 Python 对象写入 JSON 文件。 这些函数可以接收 `indent` 参数来格式化输出,提高可读性。
示例:生成 JSON 数据
```python import jsondata = {"name": "David", "age": 40}json_string = json.dumps(data, indent=4) print(json_string)with open('output.json', 'w') as f:json.dump(data, f, indent=4) ```这篇文章涵盖了 Python 解析 JSON 的主要方面。 通过熟练运用 `json` 模块提供的函数,你可以轻松地处理各种 JSON 数据,并在你的 Python 程序中有效地使用它们。 记住始终处理潜在的 `JSONDecodeError` 异常,以确保你的程序的健壮性。
Python 解析 JSON**简介**JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,广泛应用于网络数据传输和数据存储。Python 提供了内置的 `json` 模块,方便地进行 JSON 数据的解析和生成。本文将详细介绍 Python 如何解析 JSON 数据,包括基本类型、嵌套结构以及处理错误等方面。
1. 导入 `json` 模块首先,需要导入 `json` 模块:```python import json ```
2. 解析 JSON 字符串`json.loads()` 函数用于将 JSON 字符串解析为 Python 对象。 JSON 字符串中的数据会被转换成相应的 Python 数据类型:* `"string"` -> `str` * `123` -> `int` * `123.45` -> `float` * `true` -> `True` * `false` -> `False` * `null` -> `None` * `[]` -> `list` * `{}` -> `dict`**示例:解析简单的 JSON 字符串**```python json_string = '{"name": "John Doe", "age": 30, "city": "New York"}' data = json.loads(json_string)print(type(data))
Output:
Output: John Doe print(data["age"])
Output: 30 print(data["city"])
Output: New York ```
3. 解析 JSON 文件`json.load()` 函数用于从 JSON 文件中读取数据并解析为 Python 对象。**示例:解析 JSON 文件**假设有一个名为 `data.json` 的文件,内容如下:```json {"name": "Jane Doe","age": 25,"address": {"street": "123 Main St","city": "Los Angeles"} } ```Python 代码:```python import jsonwith open('data.json', 'r') as f:data = json.load(f)print(data["name"])
Output: Jane Doe print(data["address"]["city"])
Output: Los Angeles ```
4. 处理嵌套 JSON 结构`json.loads()` 和 `json.load()` 都能轻松处理嵌套的 JSON 结构。 通过键值对访问即可获取嵌套数据。**示例:处理嵌套 JSON**```python json_string = """ {"users": [{"id": 1, "name": "Alice"},{"id": 2, "name": "Bob"},{"id": 3, "name": "Charlie"}] } """data = json.loads(json_string)for user in data["users"]:print(f"ID: {user['id']}, Name: {user['name']}") ```
5. 处理 JSON 解析错误如果 JSON 字符串或文件格式不正确,`json.loads()` 和 `json.load()` 会抛出 `json.JSONDecodeError` 异常。 可以使用 `try...except` 块来处理这些错误。**示例:处理 JSONDecodeError**```python import jsonjson_string = "{invalid json}"try:data = json.loads(json_string) except json.JSONDecodeError as e:print(f"Error decoding JSON: {e}") ```
6. 生成 JSON 数据`json.dumps()` 函数用于将 Python 对象转换为 JSON 字符串。`json.dump()` 函数用于将 Python 对象写入 JSON 文件。 这些函数可以接收 `indent` 参数来格式化输出,提高可读性。**示例:生成 JSON 数据**```python import jsondata = {"name": "David", "age": 40}json_string = json.dumps(data, indent=4) print(json_string)with open('output.json', 'w') as f:json.dump(data, f, indent=4) ```这篇文章涵盖了 Python 解析 JSON 的主要方面。 通过熟练运用 `json` 模块提供的函数,你可以轻松地处理各种 JSON 数据,并在你的 Python 程序中有效地使用它们。 记住始终处理潜在的 `JSONDecodeError` 异常,以确保你的程序的健壮性。