Python基础021--json序列化和反序列化

json序列化和反序列化

  • 查看json库的所有方法
    • import json ----> print(json.__all__)
  • 序列化可以理解为:把python的对象编码转换为json格式的字符串
  • 反序列化可以理解为:把json格式字符串解码为python数据对象
  • json的dumps和loads方法--->用于对字符串进行操作
    • dumps方法,将python对象编码成json字符串
    • loads方法,将已编码的json字符串解码为python对象
    • 在进行反序列化操作的时候,字符串外面的引号必须是单引号,内部的引号必须是双引号;否则会报错
  • json的dump和load方法--->用于对文件进行操作
    • dump是把序列化之后的字符串写到一个文件中
    • load是从一个一个文件中读取文件
  • 在序列化是,中文汉字总是被转换为unicode码,在dumps函数中添加参数ensure_ascii=False即可解决
# json的序列化
In [61]: dict2 = {'name':'zzzz','age':33,'address':'郑州市'}
In [62]: print(type(dict2))
<type 'dict'>
In [63]: print(dict2)
{'age': 33, 'name': 'zzzz', 'address': '\xe9\x83\x91\xe5\xb7\x9e\xe5\xb8\x82'}
In [65]: dict2_xu = json.dumps(dict2,ensure_ascii=False)
In [66]: print(type(dict2_xu))
<type 'str'>
In [67]: print(dict2_xu)
{"age": 33, "name": "zzzz", "address": "郑州市"}

# json的反序列化
In [10]: #coding:utf-8
In [11]: import json
In [12]: dict3 = {'name':'zzz','age':22,'address':'郑州市'}
In [13]: print(type(dict3))
<type 'dict'>
In [14]: print(dict3)
{'age': 22, 'name': 'zzz', 'address': '\xe9\x83\x91\xe5\xb7\x9e\xe5\xb8\x82'}
In [15]: dict3_xu = json.dumps(dict3,ensure_ascii=False)
In [16]: print(type(dict3_xu))
<type 'str'>
In [17]: print(dict3_xu)
{"age": 22, "name": "zzz", "address": "郑州市"}
In [18]: dict3_fan = json.loads(dict3_xu)
In [19]: print(type(dict3_fan))
<type 'dict'>
In [20]: print(dict3_fan)
{u'age': 22, u'name': u'zzz', u'address': u'\u90d1\u5dde\u5e02'}



# 把文件内容进行序列化和反序列化
# 序列化-->1、先把列表序列化成字符串,然后写入到文件中再进行读取
In [27]: import json
In [28]: list1 = ['Apple','Hwawei','selenium','java','python']
In [29]: json_xu = json.dumps(list1)
In [30]: type(json_xu)
Out[30]: str
In [31]: file1 = open('./ccc.txt','w+')
In [32]: file1.write(json_xu)
In [33]: file1.tell()
Out[33]: 49
In [34]: file1.seek(0)
In [35]: file1.read()
Out[35]: '["Apple", "Hwawei", "selenium", "java", "python"]'
# 反序列化--->2、先读取文件中的字符串,然后再反序列成列表
# loads方法中的参数是string在打开文件时要使用read()方法
In [43]: json_fan = json.loads(open('./ccc.txt','r').read()) 
In [44]: print json_fan
[u'Apple', u'Hwawei', u'selenium', u'java', u'python']
In [45]: type(json_fan)
Out[45]: list
# 反序列化的标准写法
# load是基于文件操作的方法
In [46]: json_fan = json.load(open('./ccc.txt','r'))
In [47]: type(json_fan)
Out[47]: list


# dump和load对文件进行序列化和反序列化                      --->推荐使用对文件的操作方法
In [49]: import json
In [50]: list2 = ['zzzz','aaaa','bbbb']
In [51]: json.dump(list2,open('./aaa.txt','w'))             # 把序列化后的列表写入文件中
In [52]: json_fan = json.load(open('./aaa.txt','r'))        # 从文件中读取反序列化后的列表
In [53]: print(json_fan)
[u'zzzz', u'aaaa', u'bbbb']
In [54]: print(type(json_fan))
<type 'list'>

  • json中模块的区别
方法 描述
json.dump 基于文件操作的序列方法
json.dumps 基于字符串操作的序列方法,在操作文件的时候没有读取功能,要用到read()
json.load 基于文件操作的反序列方法
json.loads 基于字符串操作的反序列方法,在操作文件的时候没有读取功能,要用到read()
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,172评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,346评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,788评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,299评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,409评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,467评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,476评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,262评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,699评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,994评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,167评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,499评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,149评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,387评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,028评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,055评论 2 352

推荐阅读更多精彩内容

  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 4,211评论 4 16
  • 如果我们要操作文件、目录,可以在命令行下面输入操作系统提供的各种命令来完成。比如dir、cp等命令。 如果要在Py...
    全宇宙最帅De男人阅读 523评论 0 0
  • pyton review 学习指南 https://www.zhihu.com/question/29138020...
    孙小二wuk阅读 1,044评论 0 2
  • 今天收到熊猫书院新邮件通知:投票选举班长,我迅速地浏览了一下,应征者有11位。挨个看了大家的应征词,其中一位张同学...
    海迪哲lshj阅读 290评论 0 3
  • ces
    友人A_cf49阅读 161评论 0 0