博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
json的序列化与反序列化
阅读量:1994 次
发布时间:2019-04-27

本文共 1011 字,大约阅读时间需要 3 分钟。

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

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

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

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

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

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

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

import jsona_dict = {
'a': 11, 'b': 22}a_str = json.dumps(a_dict)print(type(a_dict)) #
print(type(a_str)) #

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

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

import jsona_json = json.load(open('demo.json', 'r'))print(type(a_json))  # 
print(a_json) # {'a': 11, 'b': 22}

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

import jsona_str = '{"a": 11, "b": 22}'a_json = json.loads(a_str)print(type(a_json))  # 
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)

转载地址:http://szrvf.baihongyu.com/

你可能感兴趣的文章
Scala学习第十七天 包、类、对象、成员、伴生类、伴生对象访问权限实战彻底详解
查看>>
Scala学习第十八天 文件的读取、写入、控制台输入操作代码实战
查看>>
Scala学习第十九天 正则表达式、与模式匹配结合的的Reg代码实战
查看>>
剑指offer:栈的压入、弹出序列(java)
查看>>
剑指offer:往上到下打印二叉树(java)
查看>>
剑指offer:二叉搜索树的后序遍历序列(java)
查看>>
剑指offer:二叉树中和为某一值的所有路径(java)
查看>>
剑指offer:复杂链表的复制(java)
查看>>
剑指offer:二叉搜索树与双向链表(java)
查看>>
剑指offer:字符串的排列(java)
查看>>
剑指offer:字符串的组合(java)
查看>>
剑指offer:数组中出现次数超过一半的数字(java)
查看>>
实时开发框架Meteor API解读系列<二>Core
查看>>
实时开发框架Meteor API解读系列<六> DDP
查看>>
实时开发框架Meteor 实际应用系列<一>---文件的上传和下载[补充]
查看>>
实时开发框架Meteor API解读系列<七> Collection --01
查看>>
启用fcitx-qimpanel面板程序
查看>>
浅谈Q的基本实现
查看>>
iOS开发——cache自动清理方案探索
查看>>
阿里云短信服务(JAVA)
查看>>