JSON操作

一、JSON 简介

  1. 定义:JSON 是一种轻量级的数据交换格式,以纯文本形式存储和传输数据。它基于 JavaScript 的一个子集,采用键值对的方式组织数据,易于人阅读和编写,同时也方便机器解析和生成。如今在多种编程语言中广泛应用,用于不同系统之间的数据交互等场景。
  2. 数据类型
    • 对象:使用大括号 {} 表示,是一个无序的 “键值对” 集合。例如:{"name": "Alice", "age": 30},其中 "name" 和 "age" 是键,"Alice" 和 30 分别是对应的值。
    • 数组:使用方括号 [] 表示,是值的有序集合。数组中的值可以是任意 JSON 数据类型,包括对象、数组、字符串、数值、布尔值或 null。例如:["apple", "banana", "cherry"] 或 [{"name": "Bob", "age": 25}, {"name": "Charlie", "age": 35}]
    • 字符串:使用双引号 " " 括起来的 Unicode 字符序列。例如:"Hello, World!"
    • 数值:可以是整数或浮点数。例如:423.14
    • 布尔值true 或 false
    • null:表示一个空值。

二、Python 中操作 JSON 的相关内容

Python 内置了 json 模块,用于处理 JSON 数据。

  1. 解析 JSON 字符串为 Python 对象
    使用 json.loads() 函数,将 JSON 格式的字符串转换为对应的 Python 对象(字典或列表等)。

python

import json

json_str = '{"name": "David", "age": 28, "is_student": false, "hobbies": ["reading", "swimming"]}'
data = json.loads(json_str)
print(data)  # 输出: {'name': 'David', 'age': 28, 'is_student': False, 'hobbies': ['reading','swimming']}
print(data["name"])  # 输出: David
print(data["hobbies"][0])  # 输出: reading

  1. 将 Python 对象转换为 JSON 字符串
    使用 json.dumps() 函数,将 Python 对象(如字典、列表)转换为 JSON 格式的字符串。

python

person = {
    "name": "Ella",
    "age": 32,
    "is_employed": true,
    "address": null
}
json_str = json.dumps(person)
print(json_str)  
# 输出: {"name": "Ella", "age": 32, "is_employed": true, "address": null}

还可以通过设置 indent 参数来格式化输出,使生成的 JSON 字符串更易读:

python

formatted_json = json.dumps(person, indent=4)
print(formatted_json)
# 输出:
# {
#     "name": "Ella",
#     "age": 32,
#     "is_employed": true,
#     "address": null
# }

  1. 访问和修改 Python 中类似 JSON 结构的对象
    如果解析得到的是字典,可以像操作普通字典一样访问和修改其键值对。

python

student = {
    "name": "Frank",
    "age": 20,
    "scores": [85, 90, 78]
}
print(student["name"])  # 输出: Frank
student["age"] = 21  # 修改年龄
print(student["age"])  # 输出: 21
student["scores"].append(92)  # 修改数组中的值
print(student["scores"])  # 输出: [85, 90, 78, 92]

  1. 遍历 Python 中类似 JSON 结构的数组(列表)
    如果解析得到的是列表,可以使用循环遍历其中的元素。

python

fruits = ["apple", "banana", "pear"]
for fruit in fruits:
    print(fruit)

students = [
    {"name": "Grace", "age": 22},
    {"name": "Henry", "age": 24}
]
for student in students:
    print(student["name"], student["age"])

  1. 读取和写入 JSON 文件
    • 读取 JSON 文件:使用 json.load() 函数,它可以直接从文件对象中读取 JSON 数据并转换为 Python 对象。

python

with open('data.json', 'r') as file:
    data = json.load(file)
    print(data)

  • 写入 JSON 文件:使用 json.dump() 函数,将 Python 对象转换为 JSON 格式并写入文件。

python

new_data = {
    "name": "Ivy",
    "city": "New York"
}
with open('new_data.json', 'w') as file:
    json.dump(new_data, file, indent=4)

你可能感兴趣的:(Python)