day16json和文件操作

本文讲解了JSON的基本概念,Python中的json模块操作,以及如何在学生管理系统中使用JSON存储和传递数据。通过实例演示了JSON转Python和Python转JSON的过程,并展示了实际应用中的数据存储策略。
摘要由CSDN通过智能技术生成

json数据

什么是json

json是一种通用的数据格式,可以用于不同编程语言之间的数据交流。

json相当于xml更小更轻、传输速度更快;xml相对json更安全。

json数据

json数据格式的要求:一个json有且只有一个数据;唯一的这个数据必须是json支持的类型的数据。

json支持类型:
1.数字: 包括整数和小数,表示的时候直接写:100、23.5、-3.14、3e4
2.字符串: 用双引号引起来的数据:“abc”、“小明”、“abc\n123\u4e00”
3.布尔: 只有true 和 false 两个值
4.空值: null
5.数组: 相当于Python的列表:[数据1,数据2,…]
6.字典: 相当于Python的字典,但是键只能是字符串:{键1:值1,键2:值2,…}

python数据和json数据之间的相互转换

Python中提供了json模块专门来处理Python中的json数据

import json
  1. json转Python

    a.数据转换

    json -> python
    数字 数字
    字符串 字符串(双引号变单引号)
    布尔 布尔(true -> True、false -> False)
    空值 空值(null -> None)
    数组 列表
    字典 字典

    b.对应的函数
    json.loads(json格式字符串) - 将json格式字符串对应的json数据转换Python数据

    注意:json格式字符串指的是内容是json数据的字符串
    
    result = json.loads("abc")    # 报错,字符串内容是 abc ,不是一个合法的json数据
    result = json.loads('"abc"')    # "abc" -> 'abc'
    print(result)
    
    result = json.loads('100')    # 100 -> 100
    print(result)
    
    result = json.loads('true')    # true -> True
    print(result)
    
    result = json.loads('[100,"小明",null,true,false]')
    print(result)    # [100, '小明', None, True, False]
    
  2. Python转json

    a.数据转换

    python -> json
    int、float 数字
    str 字符串(单引号会变成双引号)
    bool True -> true、False -> false
    None null
    列表、元组 数组
    字典 字典

    b.对应的函数
    json.dumps(Python数据) - 将指定Python数据换成对应的json格式字符串

    json.dumps(100)         # '100'
    json.dumps('abc')       # '"abc"'
    json.dumps(True)        # 'true'
    
    result = json.dumps({'a':10,20:30,'name':'xiaoming','isMarried':True})
    print(result,type(result))  # {"a": 10, "20": 30, "name": "xiaoming", "isMarried": true} <class 'str'>
    

json的实际应用

示例:学生管理系统添加学生

=========添加学生==========
请输入学生姓名:stu1
请输入学生的年龄:19
请输入学生的手机号:110
请输入学生的专业:电子信息
请输入学生的籍贯:重庆
添加成功!
❤️1. 继续
❤️2. 退出
请选择:

数据存储思路:

1.已经添加过的所有学生需要持久化
2.文件内容格式:
[
{“name”: “小明”, “age”: 18, “major”:“电子信息”, “address”: “成都”},

]

import json


def add_student():
    while True:
        # 1. 输入学生信息
        print('=========添加学生==========')
        name = input('请输入学生姓名:')
        age = input('请输入学生的年龄:')
        tel = input('请输入学生的电话:')
        major = input('请输入学生的专业:')
        address = input('请输入学生的籍贯:')

        # 2. 保存学生信息
        content = open('files/student.txt', encoding='utf-8').read()        # '[]'
        all_students = json.loads(content)          # type: list

        # [{}]
        all_students.append({'name': name, 'age': age, 'tel': tel, 'major': major, 'address': address})
        open('files/student.txt', 'w', encoding='utf-8').write(json.dumps(all_students))

        print('添加成功!')
        # 3. 提示继续或者退出
        print('❤1. 继续')
        print('❤2. 退出')
        value = input('请选择:')
        if value == '1':
            pass
        else:
            # 打印已经添加过的所有的学生信息
            print(all_students)
            break


if __name__ == '__main__':
    add_student()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值