打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
json的序列化与反序列化

json 是一种轻量级的数据交换格式,也是完全独立于任何程序语言的文本格式。

本文介绍json字符串的序列化与反序列化问题。

  • 序列化 是指将变量(对象)从内存中变成可存储或可传输的过程。
  • 反序列化 是指将变量内容从序列化的对象重新读到内存里的过程。

1、在json模块中,dump()dumps() 都实现了序列化。

dump():将dict对象序列化到文件中(文件中存储json字符串)。

import json

a_dict = {'a'11'b'22}
a_str = json.dump(a_dict, open('demo.json''w'))

dumps():将dict对象序列化为json字符串,仍在内存中。

import json

a_dict = {'a'11'b'22}
a_str = json.dumps(a_dict)
print(type(a_dict))  # <class 'dict'>
print(type(a_str))  # <class 'str'>

2、在json模块中,load()loads() 都实现反序列化。

load():针对文件句柄,从文件中读取json字符转换为dict

import json

a_json = json.load(open('demo.json''r'))
print(type(a_json))  # <class 'dict'>
print(a_json)  # {'a': 11, 'b': 22}

loads():针对内存对象,将json字符串转换为dict

import json

a_str = '{"a": 11, "b": 22}'
a_json = json.loads(a_str)
print(type(a_json))  # <class 'dict'>
print(a_json)  # {'a': 11, 'b': 22}

注意:json字符串的key为单引号时,用json.loads()会报错。

a_str = "{'a': 11, 'b': 22}"
a_json = json.loads(a_str)

# json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
十分钟入门常用的json库
序列化——廖雪峰
你必须会Python读写Json文件
python对json的操作总结
Python中将字典转换为字符串常用的方法!
[快学Python3]JSON解析
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服