Python基础入门 Day99 JSON 数据处理

109次阅读
没有评论

共计 2158 个字符,预计需要花费 6 分钟才能阅读完成。

在现代编程中,JSON(JavaScript Object Notation)是一种非常常用的数据交换格式。它轻量、可读性强,并且在不同编程语言之间广泛支持。Python 提供了内置的 json 模块来处理 JSON 数据,包括字符串与字典之间的转换,以及文件的读写操作。

  1. JSON 的基本概念
    JSON 的数据格式与 Python 的字典和列表非常相似:
  • 对象(object)对应 Python 中的字典 dict
  • 数组(array)对应 Python 中的列表 list
  • 字符串、数字、布尔值和 null 与 Python 中的 strint/floatTrue/FalseNone 一一对应。

示例 JSON 数据:

{
  "name": "Alice",
  "age": 25,
  "is_student": false,
  "hobbies": ["reading", "coding", "traveling"]
}
  1. JSON 字符串与 Python 对象转换
    使用 json.loads() 可以将 JSON 字符串转为 Python 对象,使用 json.dumps() 可以将 Python 对象转为 JSON 字符串。
import json

# JSON 字符串
json_str = '{"name": "Alice", "age": 25, "is_student": false}'

# 转换为 Python 对象
data = json.loads(json_str)
print(data)             # {'name': 'Alice', 'age': 25, 'is_student': False}
print(type(data))       # <class 'dict'>

# 将 Python 对象转为 JSON 字符串
new_json = json.dumps(data)
print(new_json)         # {"name": "Alice", "age": 25, "is_student": false}
  1. JSON 文件的读写
    通常我们需要从 JSON 文件中读取数据,或者将数据保存到 JSON 文件中。
import json

# 写入 JSON 文件
data = {
    "name": "Bob",
    "age": 30,
    "languages": ["Python", "JavaScript", "Go"]
}
with open("data.json", "w", encoding="utf-8") as f:
    json.dump(data, f, ensure_ascii=False, indent=4)

# 读取 JSON 文件
with open("data.json", "r", encoding="utf-8") as f:
    loaded_data = json.load(f)

print(loaded_data)

这里的 ensure_ascii=False 用于保证写入时支持中文,indent=4 用于让 JSON 文件更加美观。

  1. 处理复杂数据
    在实际应用中,JSON 常常嵌套多个层级,Python 依旧可以很好地处理:
import json

json_str = '''
{
    "company": "Tech Co.",
    "employees": [{"name": "Alice", "role": "Developer"},
        {"name": "Bob", "role": "Designer"}
    ],
    "active": true
}
'''

data = json.loads(json_str)
print(data["company"])              # Tech Co.
print(data["employees"][0]["name"]) # Alice
  1. 数据交换场景中的 JSON
    JSON 在网络编程中非常重要,常用于 API 数据交换。例如,调用一个天气 API,返回的结果往往是 JSON 格式:
import json

api_response = '{"city": "Beijing", "temp": 26, "condition": "Sunny"}'
weather = json.loads(api_response)

print(f" 城市: {weather['city']},温度: {weather['temp']}°C,天气: {weather['condition']}")
  1. JSON 的序列化和反序列化注意事项
  • Python 的字典键必须是字符串,才能正确转换为 JSON。
  • Python 的 tuple 在转换为 JSON 时会变成 list
  • Python 的 set 无法直接转换,需要先转换为 list

示例:

import json

data = {"numbers": (1, 2, 3),    # 元组会变为列表
    "unique": list({1, 2, 3})  # 集合需先转换为列表
}

json_str = json.dumps(data)
print(json_str)  # {"numbers": [1, 2, 3], "unique": [1, 2, 3]}

总结:
在这一节中,我们学习了如何使用 Python 的 json 模块进行数据处理,包括字符串与对象之间的转换、文件的读写,以及嵌套 JSON 的访问。掌握 JSON 数据处理是与网络接口、数据存储打交道的重要技能,为后续的网络编程与数据分析打下了坚实的基础。

练习与思考:

  1. 将一个包含学生信息的字典列表保存为 JSON 文件,并读取验证。
  2. 编写程序,读取 JSON 文件中的城市天气数据,并输出天气情况。
  3. 思考 JSON 与 Python 对象的差异,尝试将 settuple 转换为 JSON,并观察结果。
正文完
 0
评论(没有评论)