【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} 键值对形式(用冒号分开),对间用逗号连接。

{
    "student":[
        {
            "name":"小明",
            "age":11
        },
        {
            "name":"小红",
            "age":10
        }
    ],
    "classroom":{
        "class1":"room1",
        "class2":"room2"
    }
}

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:是否排序

使用示例:

>>> import json

# Python字典
>>> person = {"name": "小明", "age": 30, "tel": ["888888", "1351111111"], "isonly": True}
>>> print(person)
{'name': '小明', 'age': 30, 'tel': ['888888', '1351111111'], 'isonly': True}
>>> type(person)
<class 'dict'

# Python字典转换为json字符串
>>> jsonStr = json.dumps(person) 
>>> print(jsonStr )
{"name": "\u5c0f\u660e", "age": 30, "tel": ["888888", "1351111111"], "isonly": true}
>>> type(jsonStr)
<class 'str'>

# 格式化输出
>>> print(json.dumps(person, sort_keys=True, indent=4, separators=(',', ': ')))
{
    "age": 30,
    "isonly": true,
    "name": "\u5c0f\u660e",
    "tel": [
        "888888",
        "1351111111"
    ]
}

# 修改分隔符
>>> print(json.dumps(person, sort_keys=True, indent=4, separators=('!', '-')))
{
    "age"-30!
    "isonly"-true!
    "name"-"\u5c0f\u660e"!
    "tel"-[
        "888888"!
        "1351111111"
    ]
}

# 文件操作
import json

person = {"name": "小明", "age": 30, "tel": ["888888", "1351111111"], "isonly": True}

jsonStr = json.dumps(person)

with open('test.json', 'w', encoding='utf-8') as f:  # 打开文件
    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)

使用示例:

# 写入文件
import json

person = {"name": "小明", "age": 30, "tel": ["888888", "1351111111"], "isonly": True}

json.dump(person, open('data.json', 'w'))

# 格式化文件内输出
import json

person = {"name": "小明", "age": 30, "tel": ["888888", "1351111111"], "isonly": True}

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)

使用示例:

>>> import json

# Python字典
>>> person = {"name": "小明", "age": 30, "tel": ["888888", "1351111111"], "isonly": True}
>>> print(person)
{'name': '小明', 'age': 30, 'tel': ['888888', '1351111111'], 'isonly': True}
>>> type(person)
<class 'dict'

# Python字典转换为json字符串
>>> jsonStr = json.dumps(person) 
>>> print(jsonStr )
{"name": "\u5c0f\u660e", "age": 30, "tel": ["888888", "1351111111"], "isonly": true}
>>> type(jsonStr)
<class 'str'>

# json字符串再转换为Python字典
>>> python_obj = json.loads(jsonStr)
>>> print(python_obj)
{'name': '小明', 'age': 30, 'tel': ['888888', '1351111111'], 'isonly': True}
>>> print(type(python_obj))
<class 'dict'>

# 打印字典的所有key
>>> print(python_obj.keys())  
dict_keys(['name', 'age', 'tel', 'isonly'])

 # 打印字典的所有values
>>> print(python_obj.values()) 
dict_values(['小明', 30, ['888888', '1351111111'], True])

# 文件操作
import json

f = open('data.json', encoding='utf-8')
content = f.read()  # 使用loads()方法需要先读文件
python_obj = json.loads(content)
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)

使用示例:

import json

python_obj = json.load(open('data.json','r'))
print(python_obj)
print(type(python_obj))

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

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

学习遇到的问题

暂无

学习的收获

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

实操

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值