• 【21天Python进阶学习挑战赛】[day3]json标准库大总结



    活动地址:CSDN21天学习挑战赛

    学习日记

    学习知识点

    基础概述、json模块:100天精通Python(进阶篇)——第35天:json标准库大总结_无 羡ღ的博客-CSDN博客

    1、JSON是什么?

    JSON(全名:JavaScript Object Notation 对象表示法)是一种轻量级的文本数据交换格式,JSON的数据格式其实就是python里面的字典格式,里面可以包含方括号括起来的数组,也就是python里面的列表。

    2、JSON的特点

    JSON独立于语言
    JSON具有自我描述性,更易理解
    JSON 比 XML 更小、更快,更易解析

    3、JSON示例

    语法格式:{key1:value1, key2:value2} 键值对形式(用冒号分开),对间用逗号连接。

    1. {
    2. "student":[
    3. {
    4. "name":"小明",
    5. "age":11
    6. },
    7. {
    8. "name":"小红",
    9. "age":10
    10. }
    11. ],
    12. "classroom":{
    13. "class1":"room1",
    14. "class2":"room2"
    15. }
    16. }

    4、json模块

    4.1 作用

    1、使用json字符串生成python对象(load)

    2、由python对象格式化成为ison字符串(dump)

    4.2 数据类型转换

    将数据从Python转换到json格式:

    Python                                                 JSON
    dict                                                       object
    list, tuple                                               array
    str                                                         string
    int, float, int- & float-derived Enums     number
    True                                                      true
    False                                                     false
    None                                                     null

    将json格式转化为python内置类型:

    JSON                    Python
    object                     dict
    array                       list
    string                      str
    number(int)        int
    number(real)      float
    true                         True
    false                        False
    null                          None

    4.3 使用方法

    方法                           功能
    json.dumps(obj)        将python数据类型转换为json格式的字符串。
    json.dump(obj, fp)     将python数据类型转换并保存到son格式的文件内。
    json.loads(s)              将json格式的字符串转换为python的类型。
    json.load(fp)              从json格式的文件中读取数据并转换为python的类型。

    4.3.1  json.dumps() 将python数据类型转换为json格式的字符串

    语法格式:json.dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

    参数说明:

    skipkeys:是否允许JSON字串编码字典对象时,字典的key不是字符串类型(默认是不允许)

    indent:定义缩进距离

    separators:是一个元组,定义分隔符的类型

    sort_keys:是否排序

    使用示例:

    1. >>> import json
    2. # Python字典
    3. >>> person = {"name": "小明", "age": 30, "tel": ["888888", "1351111111"], "isonly": True}
    4. >>> print(person)
    5. {'name': '小明', 'age': 30, 'tel': ['888888', '1351111111'], 'isonly': True}
    6. >>> type(person)
    7. <class 'dict'
    8. # Python字典转换为json字符串
    9. >>> jsonStr = json.dumps(person)
    10. >>> print(jsonStr )
    11. {"name": "\u5c0f\u660e", "age": 30, "tel": ["888888", "1351111111"], "isonly": true}
    12. >>> type(jsonStr)
    13. <class 'str'>
    14. # 格式化输出
    15. >>> print(json.dumps(person, sort_keys=True, indent=4, separators=(',', ': ')))
    16. {
    17. "age": 30,
    18. "isonly": true,
    19. "name": "\u5c0f\u660e",
    20. "tel": [
    21. "888888",
    22. "1351111111"
    23. ]
    24. }
    25. # 修改分隔符
    26. >>> print(json.dumps(person, sort_keys=True, indent=4, separators=('!', '-')))
    27. {
    28. "age"-30!
    29. "isonly"-true!
    30. "name"-"\u5c0f\u660e"!
    31. "tel"-[
    32. "888888"!
    33. "1351111111"
    34. ]
    35. }
    36. # 文件操作
    37. import json
    38. person = {"name": "小明", "age": 30, "tel": ["888888", "1351111111"], "isonly": True}
    39. jsonStr = json.dumps(person)
    40. with open('test.json', 'w', encoding='utf-8') as f: # 打开文件
    41. f.write(jsonStr) # 在文件里写入转成的json串

    4.3.2 json.dump() 将python数据类型转换并保存到son格式的文件内

    语法格式:json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

    使用示例:

    1. # 写入文件
    2. import json
    3. person = {"name": "小明", "age": 30, "tel": ["888888", "1351111111"], "isonly": True}
    4. json.dump(person, open('data.json', 'w'))
    5. # 格式化文件内输出
    6. import json
    7. person = {"name": "小明", "age": 30, "tel": ["888888", "1351111111"], "isonly": True}
    8. json.dump(person, open('data.json', 'w'), sort_keys=True, indent=4, separators=(',', ': '))

    4.3.3 json.dumps和json.dump写入文件的区别

    • dump() 不需要使用.write()方法,只需要写那个字典,那个文件即可;而 dumps() 需要使用.write()方法写入。
    • 如果把字典写到文件里面的时候,dump()好用;但是如果不需要操作文件,或需要把内容存储到数据库和excel,则需要使用dumps()先把字典转换成字符串,再写入。

    4.3.4 json.loads() 将json格式的字符串转换为python的类型

    语法格式:json.loads(s, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)

    使用示例:

    1. >>> import json
    2. # Python字典
    3. >>> person = {"name": "小明", "age": 30, "tel": ["888888", "1351111111"], "isonly": True}
    4. >>> print(person)
    5. {'name': '小明', 'age': 30, 'tel': ['888888', '1351111111'], 'isonly': True}
    6. >>> type(person)
    7. <class 'dict'
    8. # Python字典转换为json字符串
    9. >>> jsonStr = json.dumps(person)
    10. >>> print(jsonStr )
    11. {"name": "\u5c0f\u660e", "age": 30, "tel": ["888888", "1351111111"], "isonly": true}
    12. >>> type(jsonStr)
    13. <class 'str'>
    14. # json字符串再转换为Python字典
    15. >>> python_obj = json.loads(jsonStr)
    16. >>> print(python_obj)
    17. {'name': '小明', 'age': 30, 'tel': ['888888', '1351111111'], 'isonly': True}
    18. >>> print(type(python_obj))
    19. <class 'dict'>
    20. # 打印字典的所有key
    21. >>> print(python_obj.keys())
    22. dict_keys(['name', 'age', 'tel', 'isonly'])
    23. # 打印字典的所有values
    24. >>> print(python_obj.values())
    25. dict_values(['小明', 30, ['888888', '1351111111'], True])
    26. # 文件操作
    27. import json
    28. f = open('data.json', encoding='utf-8')
    29. content = f.read() # 使用loads()方法需要先读文件
    30. python_obj = json.loads(content)
    31. print(python_obj)

    4.3.5 json.load() 从json格式的文件中读取数据并转换为python的类型

    语法格式:json.load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)

    使用示例:

    1. import json
    2. python_obj = json.load(open('data.json','r'))
    3. print(python_obj)
    4. print(type(python_obj))

    4.3.5 json.load() 和 json.loads() 区别

    • loads() 传的是json字符串,而 load() 传的是文件对象
    • 使用 loads() 时需要先读取文件在使用,而 load() 则不用
       

    学习遇到的问题

    暂无

    学习的收获

    Java实际开发中也经常遇到处理JSON格式字符串的场景,一般都用阿里的fastJson工具。通过本章学习,了解到Python中处理JSON格式数据的常用方法。

    实操

    暂无,本周找时间把本地环境​搭一下,跑跑看。

  • 相关阅读:
    【Java】【PAT】Basic Level 1022 D进制的A+B
    证券相关业务知识
    微软Build 2023两大主题:Copilots和插件
    一篇文章带你了解热门版本控制系统——Git
    离散傅里叶变换(DFT)
    21 springboot集成kafka
    掌握接口自动化测试,看这篇文章就够了,真滴简单
    怎么申请工程勘察资质,申请工程勘察乙级资质需要满足什么条件
    蓝桥杯:日期问题(我的绝望题)
    SpringMVC:拦截器+文件上传下载, 拦截器
  • 原文地址:https://blog.csdn.net/yxz8102/article/details/126152438