python中的json模块_json模块的使用

本文总结一点python标准库中json模块的使用。json主要是异种用于程序之间的数据交换格式,关于json本身,请参考:json数据格式。

使用json模块,其实就是对数据进行序列化和反序列化的操作。python对于这类操作,接口函数的命令是比较统一的,都是load,dump,loads,dumps这样的,比如pickle模块。

json模块接口产生的数据都是str!

python对象和json数据类型的对应关系:

JSONPythonobjectdict

arraylist

stringstr

number (int)int

number (real)float

trueTrue

falseFalse

nullNone

load和dump

load和dump,后面没有带s,表示是对文件进行操作。load,读取文件,dump,写入文件,中间当然就是按照json格式进行反序列化和序列化的操作。

>>> import json

>>> f = open('tt.json')

>>> data = json.load(f)

>>> data

{'fromaddr': 'from@qq.com', 'passwd': '123456789', 'server': 'smtp.qq.com', 'port': 587, 'connect': 'tls', 'timeout': 3, 'debuginfo': False, 'msg': [{'subject': 'test json file', 'to': 'to@qq.com', 'cc': None, 'bcc': None, 'type': 'plain', 'content': '人生hahaha...lalala...'}, {'subject': 'test json file', 'to': 'to@qq.com', 'cc': None, 'bcc': None, 'type': 'html', 'content': '

2222...hahaha...lalala...'}]}

>>> type(data)

>>> f.tell()

610

>>> f.close()

data通过json.load接口,直接就成为了一个dict对象。

>>> g = open('tt2.json_dump', 'w')

>>> json.dump(data, g)

>>> g.tell()

426

>>> g.close()

>>> os.system('bash')

$ cat tt2.json_dump

{"fromaddr": "from@qq.com", "passwd": "123456789", "server": "smtp.qq.com", "port": 587, "connect": "tls", "timeout": 3, "debuginfo": false, "msg": [{"subject": "test json file", "to": "to@qq.com", "cc": null, "bcc": null, "type": "plain", "content": "\u4eba\u751fhahaha...lalala..."}, {"subject": "test json file", "to": "to@qq.com", "cc": null, "bcc": null, "type": "html", "content": "

2222...hahaha...lalala..."}]}

将一个dict对象,直接dump进一个文件。

loads和dumps

这两个函数后面带s,表示操作对象是str对象,其它都一样。

>>> data

{'a': [1, 2, 3, 4, 5], 'b': [5, 4, 3, 2, 1]}

>>> json.dumps(data)

'{"a": [1, 2, 3, 4, 5], "b": [5, 4, 3, 2, 1]}'

>>> json.loads(json.dumps(data))

{'a': [1, 2, 3, 4, 5], 'b': [5, 4, 3, 2, 1]}

json模块还有一个工具tool,可以用来在命令行检查json数据并美化输出。

python官方对json模块的说明页:https://docs.python.org/3/library/json.html#module-json,使用上的细节就要到这里去查阅了。

json.dump和json.dumps这两函数,如果给indent=4参数,就可以实现pretty output的效果。json.tool就是这么干的!

-- EOF --

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值