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

Posted Goodric

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的都是和文件相关的

——

以上是关于21天学习挑战赛Python学习第二篇:json标准库的主要内容,如果未能解决你的问题,请参考以下文章

21天学习挑战赛—Python学习记录第一篇

21天学习挑战赛—Python学习记录第一篇

21天学习挑战赛Python学习第三篇:os 标准库

21天学习挑战赛Python学习第三篇:os 标准库

21天学习挑战赛Python学习第四篇:多线程 threading 模块

21天学习挑战赛Python学习第四篇:多线程 threading 模块