转自:大学计算机基础
什么是JSON?
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于文本,易于人阅读和编写,同时也易于机器解析和生成。JSON是独立于语言的,尽管它源自JavaScript,但它被广泛支持于多种编程语言,包括Python。
JSON的结构
JSON使用两种结构来表示数据:
对象(Object):键值对的集合,用花括号
{}表示。键必须是字符串,值可以是字符串、数字、对象、数组、布尔值(true/false)或null。数组(Array):值的有序集合,用方括号
[]表示。数组中的值可以是任何JSON支持的类型。
JSON的示例
{"name": "John Doe","age": 30,"isEmployed": true,"address": {"street": "123 Main St","city": "Anytown"},"phoneNumbers": ["555-1234", "555-5678"]}
在这个示例中,我们定义了一个包含多个字段的对象,每个字段都有一个名称(键)和一个值。值可以是基本数据类型,也可以是对象或数组。
Python中的JSON处理
Python提供了一个内置的json模块来处理JSON数据。这个模块包括两个主要的函数:
json.loads():将JSON格式的字符串解析为Python对象(通常是字典或列表)。json.dumps():将Python对象转换为JSON格式的字符串。
此外,还有两个函数用于文件操作:
json.load():从文件中读取JSON数据。json.dump():将JSON数据写入文件。
实际应用案例
假设我们有一个在线商店,需要处理订单数据。我们可以使用JSON来存储订单信息,然后使用Python来处理这些数据。
import json# 假设这是从服务器接收到的订单数据order_json = '''{"customer": "John Doe","items": [{"product": "Laptop","quantity": 1,"price": 999.99},{"product": "Mouse","quantity": 2,"price": 19.99}],"total": 1029.97}'''# 解析JSON数据order = json.loads(order_json)# 计算订单总额total = sum(item['price'] * item['quantity'] for \item in order['items'])print(f"订单总额: {total}")# 更新订单状态order['status'] = 'Shipped'# 将更新后的订单写回文件with open('order.json', 'w') as f:json.dump(order, f, indent=4)
在这个例子中,我们首先解析了一个包含订单信息的JSON字符串。然后,我们计算了订单的总额,更新了订单状态,并将更新后的订单信息写入了一个文件。
结论
对于大学生编程学员来说,理解JSON和掌握如何在Python中处理JSON是非常重要的。这不仅有助于你们理解数据如何在不同系统和应用程序之间传输,还能提升你们处理网络请求和响应的能力。通过实践操作,你们可以更好地理解JSON在实际编程中的应用,为未来的软件开发打下坚实的基础。
AI应用(识别下面图片,并让AI把它转成Json格式数据):
(一)训练01、
提示词如下:
KIMI给出的答案如下:
解释
store_name:表示商店名称。receipt:包含购物小票的详细信息。code:商品编码。product:商品名称。quantity:购买数量。price:商品价格。cashier:收银员编号。date:购物日期和时间。items:一个数组,包含每个商品的详细信息。total:所有商品的总价格。message:感谢购物的信息。
import json# 假设 json_data 是包含上面提供的JSON数据json_data = '''{"store_name": "WW STORE","receipt": {"cashier": "CASHIER#1","date": "2021-06-01T08:08:00","items": [{"code": "93","product": "蓝色星球","quantity": 1,"price": 88.0},{"code": "55","product": "梦想盒子","quantity": 1,"price": 88.0},{"code": "33","product": "粉红飞机","quantity": 1,"price": 88.0}],"total": 264.0},"message": "THANK YOU FOR SHOPPING!"}'''# 解析JSON数据data = json.loads(json_data)# 获取所有商品的价格prices = [item['price'] for item in data['receipt']['items']]# 计算平均价格average_price = sum(prices) / len(prices)# 打印平均价格print(f"平均价格为: {average_price:.2f} 美元")
json_data中的JSON数据。然后,它从解析的数据中提取了所有商品的价格,计算了这些价格的平均值,并将结果打印出来。在这个例子中,平均价格被格式化为两位小数。
prices = [item['price'] for item in data['receipt']['items']]
import jsonimport randomfrom datetime import datetime# 动物谜题题库 (20题)animal_quiz = {"quiz": [{... ... ....}def save_quiz_data():"""保存题库到文件"""with open('animal_quiz.json', 'w') as f:json.dump(animal_quiz, f, indent=4)def load_quiz_data():"""从文件加载题库"""try:with open('animal_quiz.json', 'r') as f:return json.load(f)except FileNotFoundError:save_quiz_data()return animal_quizdef save_score(name, score):"""保存玩家成绩"""try:with open('data.json', 'r') as f:scores = json.load(f)except (FileNotFoundError, json.JSONDecodeError):scores = []scores.append({"name": name,"score": score,"date": datetime.now().strftime("%Y-%m-%d %H:%M:%S")})with open('data.json', 'w') as f:json.dump(scores, f, indent=4)def run_quiz():"""运行测验"""print("=== 动物猜谜小测验 ===")print("根据英文描述猜出动物名称(输入小写英文单词)\n")name = input("请输入你的名字: ").strip()if not name:name = "匿名玩家"quiz_data = load_quiz_data()questions = random.sample(quiz_data['quiz'], 5)score = 0for i, question in enumerate(questions, 1):print(f"\n问题 {i}/5 (20分)")print(question['description'])answer = input("你的答案: ").strip().lower()if answer == question['answer']:print("✅ 正确!")score += 20else:print(f"❌ 错误! 正确答案是: {question['answer']}")print(f"\n=== 测验结束 ===")print(f"{name} 的得分: {score}/100")save_score(name, score)print("成绩已保存到 data.json")if __name__ == "__main__":run_quiz()

