python中 json的 序列化 和 反序列化

序列化可以理解为  :把python的对象编码转换为json格式的字符串  python     ---> json
反序列化可以理解为:把json格式字符串解码为python数据对象      json字符串 ---> python数据对象.

 

一、json 的 dumps() 和 loads() 可实现数据的序列化和反序列化

import json
print(json.__all__)  # 查看json 库里面所有的方法
# ['dump', 'dumps', 'load', 'loads', 'JSONDecoder', 'JSONDecodeError', 'JSONEncoder']

1、不加dumps函数中的参数 ensure_ascii = False, 默认为True

dict1 = {"name": "cc", "age": 10}
print("未序列化的数据类型为:", type(dict1))
print("未序列化的数据:", dict1)
print("*"*30)
"""
输出:
    ['dump', 'dumps', 'load', 'loads', 'JSONDecoder', 'JSONDecodeError', 'JSONEncoder']
    未序列化的数据类型为: <class 'dict'>
    未序列化的数据: {'name': 'cc', 'age': 10}
"""

2、对dict1进行序列化处理

xu_dict1 = json.dumps(dict1)
print("序列化后的数据类型为:", type(xu_dict1))
print("序列化后的数据:", xu_dict1)
print("*"*40)
"""
输出:
    序列化后的数据类型为: <class 'str'>
    序列化后的数据: {"name": "cc", "age": 10}
"""

 

3、加上 dumps 函数中的参数 ensure_ascii = False

# 当有中文的时候会出现解析错误
dict2 = {"name":"cc", "address": "郑州"}
xu_dict2 = json.dumps(dict2)
print("未加ensure_ascii=False,序列化后的数据类型为:", type(xu_dict2))
print("ensure_ascii=False,序列化后的数据:", xu_dict2)
print("*"*50)
"""
输出:
    未加ensure_ascii=False,序列化后的数据类型为: <class 'str'>
    ensure_ascii=False,序列化后的数据: {"name": "cc", "address": "\u90d1\u5dde"}
"""

4、当有中文的时候,ensure_ascii=False 中文正常解析, 默认ensure_ascii = True

 

dict2 = {"name":"cc", "address": "郑州"}
xu_dict3 = json.dumps(dict2, ensure_ascii=False)
print("加ensure_ascii=False序列化后的数据类型为:", type(xu_dict3))
print("加ensure_ascii=False序列化后的数据:", xu_dict3)
"""
输出:
    加ensure_ascii=False序列化后的数据类型为: <class 'str'>
    加ensure_ascii=False序列化后的数据: {"name": "cc", "address": "郑州"}
"""

json 反序列化 loads()、dump()、 load() 函数  str --- > dict

fan_json = json.loads(xu_dict3)
print("反序列化的数据类型:", type(fan_json))
print("反序列化后的数据: ", fan_json)
"""
输出:
    反序列化的数据类型: <class 'dict'>
    反序列化后的数据:  {'name': 'cc', 'address': '郑州'}
"""

dict1 = {"name": "cc", "age": 10}
# json  dump()用法, 将  数据保存在 json文件中
with open('data.json', 'w') as f:
    json.dump(dict1, f)

# json load()用法, 将 从json文件中读取数据, 变成 python
with open('data.json', 'r') as f:
    data = json.load(f)
print(type(data))           # 字典  python格式
print(data)                 # {'name': 'cc', 'age': 10}

with open('data.json', 'r') as f:
    print(type(f.read()))  # 字符串 json格式, 用load() 函数加载得到的是 字典对象


dict1 = json.load(open("json 文件的路径"))   # 读取json文件的一种方式

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值