# json模块,讲python数据转换成json数据,或者将json数据转换成python数据
# json格式,本质上是字符串
# 作用:方便各种编程语言之间的数据交互
import json
data = [{'name': '张学友', 'age': '18'}, {'name': '刘德华', 'age': '28'}, (11, 33)] # python格式
data01 = '[{"name":"zhangxueyou","age":"18"},{"name":"liudehua","age":"28"},[11,33]]' # json格式,json格式没有小括号(),内部全部双引号
# python格式转json格式,一般成为序列化
data02 = json.dumps(data)
print(
data02) # [{"name": "\u5f20\u5b66\u53cb", "age": "18"}, {"name": "\u5218\u5fb7\u534e", "age": "28"}, [11, 33]],中文会转换成Unicode编码
data03 = json.dumps(data, ensure_ascii=False)
print(data03) # [{"name": "张学友", "age": "18"}, {"name": "刘德华", "age": "28"}, [11, 33]] ,可读性更高
# json格式转python格式,一般称为反序列化
data04 = json.loads(data01)
print(data04) # [{'name': 'zhangxueyou', 'age': '18'}, {'name': 'liudehua', 'age': '28'}, [11, 33]]
# python转换成json格式的数据要求:字典dict、元组tuple、列表list、字符串str、整形int、浮点型float、布尔值True/False、None
# 非以上类型python数据转换成json格式
from decimal import Decimal
from datetime import datetime
data05 = [{'name': '张学友', 'age': '18', 'size': Decimal('33.33'), 'time': datetime.now()},
{'name': '刘德华', 'age': '28', 'size': Decimal('77.33'), 'time': datetime.now()}, (11, 33)]
class MyJSONEnconder(json.JSONEncoder): # 固定搭配
def default(self, o):
if type(o) == Decimal:
return str(o) # 当数据类型是Decimal的时候,转换成字符串
elif type(o) == datetime:
return o.strftime("%Y-%M-%D") # 当数据类型是时间的时候,获取时间并转换成相应的字符串
return super().default(o) # 其他类型按照以前的类型展示
r = json.dumps(data05, cls=MyJSONEnconder, ensure_ascii=False)
print(
r) # [{"name": "张学友", "age": "18", "size": "33.33", "time": "2021-24-10/24/21"},
# {"name": "刘德华", "age": "28", "size": "77.33", "time": "2021-24-10/24/21"}, [11, 33]]
# json.dump:将数据序列化并写入文件
file_objct = open('xxx.json', mode='w', encoding='utf-8')
json.dump(data, file_objct)
file_objct.close()
# json.load:读取文件数据并反序列化
file_objct = open('xxx.json', mode='r', encoding='utf-8')
data06 = json.load(file_objct)
print(data06)
file_objct.close()
Python:json模块
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
上一篇:8,python 日志和异常
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
python模块--Telnetlib模块
telnet模块
ci 用户名 for循环 -
【模块二】Python进阶#python
-
python json 模块
python json 模块
python json 模块 -
Python常用模块之 json模块
Python常用模块之 json模块
json python python基础 json模块 数据