• 013-json


    1、什么是JSON

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

    JSON格式相对于xml数据更简单轻小,传输速度更快,xml相当于JSON更安全

    2、JSON数据

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

    • 数字:包括整数和小数,表示的时候直接写:100、0.31、-21、3e4
    • 字符串:由双引号引起来的数据 “sadsa”、“小明”
    • 布尔:只有true 和false两个值
    • 数组:相当于python的列表 [数据1,数据2,…]
    • 空值:null
    • 字典:相当于python的字典,但是JSON中的键只能是字符串
    3、python数据与JSON 数据之间的相互转换
    3.1、json---->python
    json.load(json格式字符串)  将  json格式字符串  对应的JSON数据转换成python数据
    注意:json格式字符串 指的是json数据的字符串 
    
    • 1
    • 2
    jsonpython
    数字数字
    字符串字符串(双引号变单引号)
    布尔布尔(true false->True False)
    空值空值(null->None)
    数组列表
    字典字典
    content=open('data.json',encoding='utf-8').read()
    result=json.loads(content)
    print(content)
    print(result)
    
    • 1
    • 2
    • 3
    • 4
    # result=json.loads("abc") # 报错,字符串内容是abc,不是一个合法的JSON数据
    result=json.loads('"abc"')
    print(result) # abc
    result=json.loads('true')
    print(result) # true
    result=json.loads('100')
    print(result) # 100
    result=json.loads('[100,"小明",null,true,false]')
    print(result)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    示例
    # 示例  从网页接口中解析数据获取所有英雄的名字
    # 1 获取JSON数据(从文件中读出来,直接做网络请求)
    import requests
    resp=requests.get('https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js?ts=2766570')
    content=resp.text
    # 2 json 解析
    result=json.loads(content)
    for i in result['hero']:
        print(i['name'],i['title'])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    3.2、python---->json
    json.dumps(Python数据)   将指定python数据转成对应的json格式字符串
    
    • 1
    pythonjson
    int、float数字
    str字符串(单引号转成双引号)
    boolTrue False->true false
    Nonenull
    列表元组数组
    字典字典
    print(json.dumps(100)) # 100
    print(json.dumps('abc')) # "abc"
    print(json.dumps(True)) #  true
    result=json.dumps({'a':10,20:30,'name':'丽丽','ismarried':True})
    print(result) # {"a": 10, "20": 30, "name": "\u4e3d\u4e3d", "ismarried": true}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    4、JSON的实际应用
    # 示例  学生管理系统添加学生
    import json
    
    '''
    ========添加学生========
    姓名:
    年龄:
    手机号:
    专业:
    籍贯:
    添加成功!
    1.继续
    2.退出
    请选择
    
    '''
    '''
    数据存储思路
    1、数据持久化
    2、数据存储的格式
    '''
    def add_stu():
        while True:
            # 输入学生信息
            print(' ========添加学生======')
            name = input('请输入学生姓名: ')
            age = input('请输入学生的年龄: ')
            tel = input('请输入学生的电话: ')
            major = input('请输入学生的专业: ')
            address = input('请输入学生的籍贯: ')
            # 2.保存学生信息
            content=open('file/student.txt', 'r', encoding='utf-8').read()
            all_stu=json.loads(content) # type:list
            all_stu.append({'name':name,'age':age,'tel':tel,'major':major,'address':address})
            open('file/student.txt','w',encoding='utf-8').write(json.dumps(all_stu))
    
            print('添加成功')
            # 3.提示继续或者退出
            print('1.继续')
            print('2.退出')
            value=input('请选择:')
            if value=='1':
                pass
            else:
                print(all_stu)
                break
    
    if __name__ == '__main__':
        add_stu()
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
  • 相关阅读:
    前端国密SM4加密代码
    发展前景好、薪资高,计算机行业成为许多人改变命运的首选!
    XSS跨站脚本攻击
    代码随想录算法训练营第1天 | 704.二分查找、27.去除元素
    10_上传漏洞_代码审计&文件命名
    IP地址最终弹,DNS,数据链路层,特殊地址
    分布式.CAP理论
    ubuntu20.04 实测 机械式激光雷达与相机联合标定
    微信小程序备案流程操作详解
    打车/网约车、代驾、顺风车/拼车/快车/专车(含市内和城际)、货运(小程序、APP(安卓/苹果)、公众号、H5网页)
  • 原文地址:https://blog.csdn.net/qq_44087994/article/details/126255516