[笔记] python的json模块
来源:互联网 发布:mysql输出错误信息 编辑:程序博客网 时间:2024/06/07 10:41
在序列化中我们谈到,可以使用pickle进行序列化。但是,pickle模块不能存储关键数据。这时,可以使用xml,json的数据格式存储比较重要的数据。与xml格式相比,json格式更简单,更快,还能在界面中读取。
json表示的就是javascript语言的对象,其与python中的对象有着如下的对应关系:
python 对象 —–> json
利用python的json模块,可以将python对象转化为json格式。
>>> import json
>>> d = dict(name = ‘wava’, age = 20, score =88)
>>> json.dumps(d)
‘{“age”: 20, “score”: 88, “name”: “wava”}’
dumps()函数返回一个字符串,内容就是标准的json。
与pickle模块类似,json模块也有dump()函数。输入一个python对象,并将这个对象写入文件,其格式是符合json标准的。
我们先换个工作路径:
>>> os.path.abspath(‘.’)
‘C:\Python27’
>>> os.chdir(‘../pyPro’)
>>> os.getcwd()
‘C:\pyPro’
>>> f = open(‘test.txt’,’wb’)
>>> json.dump(d,f)
>>> f.close()
这样,test.txt文件中就存储了字符串{“age”: 20, “score”: 88, “name”: “wava”}
json —> python对象
要把json反序列化为python对象可以使用loads和load方法。
loads的输入参数是字符串对象。
load的输入参数是文件对象。
>>> os.listdir(‘.’)
[‘.ipynb_checkpoints’, ‘dump.txt’, ‘pickle.py’, ‘test.txt’]
>>> f = open(‘test.txt’,’rb’)
>>> d = json.load(f)
>>> d
{u’age’: 20, u’score’: 88, u’name’: u’wava’}
>>> d_js = json.dumps(d)
>>> d_js
‘{“age”: 20, “score”: 88, “name”: “wava”}’
>>> d = json.loads(d_js)
>>> d
{u’age’: 20, u’score’: 88, u’name’: u’wava’}
python的一般类——–>json
平时中,我们使用最多的是自己写的类。这些类如何转变为json数据呢?
这需要我们自己写个转化函数。
class Student(object): def __init__(self, name, age, score): self.name = name self.age = age self.score = scoredef student2dict(std): return dict(name=std.name,age = std.age,score=std.score)
>>> s = Student(‘wat’,20,66)
>>> json.dumps(s, default=student2dict)
‘{“age”: 20, “score”: 66, “name”: “wat”}’
在python语言中,类的实例都有一个__dict__属性,这是一个字典,它里面存放着这个实例的属性,少数例外是类中定义了__slots__属性。
>>> s.__dict__
{‘age’: 20, ‘score’: 66, ‘name’: ‘wat’}
>>> json.dumps(s,default=lambda x:x.__dict__)
‘{“age”: 20, “score”: 66, “name”: “wat”}’
json——–>python一般类
在反序列化时,dumps函数提供了参数object_hook,将dict转化为类的实例。
|>>> d_js
‘{“age”: 20, “score”: 88, “name”: “wava”}’
def dict2student(d): return Student(d['name'],d['age'],d['score'])
>>> ls = json.loads(d_js, object_hook=dict2student)
>>> ls
<__main__.Student object at 0x0000000002C720B8>
- [笔记] python的json模块
- 【Python学习笔记】-json模块
- Python的JSON模块
- python的json模块
- Python的json模块包
- python中json模块的使用
- python中json模块的用法
- python中json模块的基础用法
- python pickle模块 json模块
- python模块之JSON模块
- python-Json模块【解析Json】
- python-Json模块【解析Json】
- python-Json模块【解析Json】
- python-Json模块【解析Json】
- python解析json:json模块
- python模块学习---json
- python json模块
- Python JSON模块
- ssh无密码验证登录配置浓缩版
- Android 控件使用Animator动画后,点击事件失效解决方法
- Longest Palindromic Substring
- 把二元查找树转变成排序的双向链表
- leetcode 31 -- Next Permutation
- [笔记] python的json模块
- 为何会有enable_share_from_this
- Python正则表达式教程
- shell 脚本 变量自增长
- gcd的使用
- 简介Android启动过程
- HDU 2516 取石子游戏(斐波那契博弈)
- nice() getpriority() setpriority()
- OJ嘻唰唰 我想放假