【21天学习挑战赛】Python学习第二篇:json标准库

【21天学习挑战赛】Python学习第二篇:json标准库

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

——
JSON(JavaScript Object Notation ,对象表示法), 是一种轻量级的文本数据交换格式。

JSON的数据格式其实就是python里面的字典格式,即大括号内存在键和值。

其中可以包含方括号括起来的数组,也就是python里面的列表。

——

特点:

json 独立于语言
json 具有自我描述性,更容易理解
json 比 xml 更小,更快,更易解析
爬虫检查会获取接口数据,接口数据就是 json 格式

——

json 格式

键值对用冒号隔开,每对键值用逗号链接。

json的键值对的键部分,必须用双引号"包裹 (所以如果在键中出现了关键字,也被字符化了),而js中对象没有强制要求(所以在键中不允许出现关键字)。

json数据结束后,不允许出现没有意义的逗号,如:{“name”:“admin”,“age”:18,}

json的键值对的值部分,不允许出现函数function,undefined,NaN,但是可以有null,js中对象的值中可以出现。如{“name”:function(),“age”:undefined,“show”:NaN} 这三种情况都是错误的。

json 对象:

{
    "name":"小明""age":18
}

json 数组:

{
    "student":
        [
            {"name":"小明","age":11}
            {"name":"小红","age":10}
            {"name":"小白","age":12}
        ]
}

——

json 模块的使用

json.dumps(obj): 将python数据类型转换为json格式的字符串。
json.dump(obj, fp): 将python数据类型转换并保存到son格式的文件内。

数据从Python转换到json格式,在数据类型上会有变化
请添加图片描述

json.loads(s): 将json格式的字符串转换为python的类型。
json.load(fp): 从json格式的文件中读取数据并转换为python的类型。

反过来,将json格式转化为python内置类型
请添加图片描述

——

json.dumps()的使用

语法格式:
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)

import json

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

jsonstr = json.dumps(person)
print(jsonstr)
print(type(jsonstr))

先创建一个字典, 可以看到python数据类型转换为json格式之后的区别
python字典打印输出的键值单引号, json格式打印输出是双引号类型变为 str
True 变为 true
请添加图片描述

使用参数格式化输出json字串。

import json

person = {"name": "小明", "age": 30, "tel": ["888888", "1351111111"], "isonly": True}
jsonstr = json.dumps(person,sort_keys=True,indent=4,separators=(',',':'))
print(jsonstr)

sort_kyes: 是否排序
indent: 定义缩进距离为4
separators: 是一个元组,定义分隔符的类型(键值以冒号分隔,每个键值对以逗号分隔)通过这个参数可以修改分隔的符号
请添加图片描述

——

json.dump()的使用

语法格式:
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'),indent=4)

查看创建好并写入的json字串的data.json 文件。
请添加图片描述

dump() 写入文件可以直接在里面添加参数即可写入。
相比于 dumps() 要把json 字串写入文件的话, 需要使用.write()方法写入。如 f.write(‘data.json’,‘w’)

——

json.loads()的使用

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

import json

person = {"name": "小明", "age": 30, "tel": ["888888", "1351111111"], "isonly": True}
jsonstr = json.dumps(person)
print(jsonstr)
print(type(jsonstr))

python_obj = json.loads(jsonstr)
print(python_obj)
print(type(python_obj))
print("转换后字典的键:")
print(python_obj.keys())

json格式的字符串转换为python的类型。
请添加图片描述

——

json.load() 的使用

语法格式:
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))

json.load() 直接读取 data.json 文件,并转换成了python的类型。
请添加图片描述

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

不管是dump还是load,带s的都是和字符串相关的,不带s的都是和文件相关的

——

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Goodric

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值