Python进阶03json
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python进阶03json相关的知识,希望对你有一定的参考价值。
本节学习如何使用 Python 语言来编码和解码 JSON 对象。
这里的编码不是指字符编码,而是指把python对象转化为能在网络上或其它介质上传输的文本信息。
一、json简介
JSON: JavaScript Object Notation(JavaScript 对象表示法)
JSON 是存储和交换文本信息的语法。类似 XML。
JSON 比 XML 更小、更快,更易解析。
JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。
JSON 实例
{ "sites": [ { "name":"菜鸟教程" , "url":"www.runoob.com" }, { "name":"google" , "url":"www.google.com" }, { "name":"微博" , "url":"www.weibo.com" }]}
这个 sites 对象是包含 3 个站点记录(对象)的数组。
类似Python的dict
json语法规则:
数据在名称/值对中
数据由逗号分隔
花括号保存对象
方括号保存数组
二、json模块
In [4]: import json In [5]: json. json.JSONDecoder json.dump json.load json.JSONEncoder json.dumps json.loads json.decoder json.encoder json.scanner
encode | 将 Python 对象编码成 JSON 字符串 |
decode | 将已编码的 JSON 字符串解码为 Python 对象 |
python与json支持以下几种结构转化:
| Supports the following objects and types by default: | | +-------------------+---------------+ | | Python | JSON | | +===================+===============+ | | dict | object | | +-------------------+---------------+ | | list, tuple | array | | +-------------------+---------------+ | | str, unicode | string | | +-------------------+---------------+ | | int, long, float | number | | +-------------------+---------------+ | | True | true | | +-------------------+---------------+ | | False | false | | +-------------------+---------------+ | | None | null | | +-------------------+---------------+
案例:有一个保存用户信息的json文件,需要解析json为User类。
User = nametuple(‘User‘, [‘name‘, ‘age‘, ‘gender‘, ‘phone‘, ‘mail‘])
[[email protected] src]# cat text.json { "users": [ { "name": "xj", "age": 25, "gender": "man", "phone": "15711112222", "mail": "[email protected]" }] }
解决方案:
解析json为字典,再处理字典
使用object_hook
In [3]: ret = json.load(open("/tmp/src/text.json")) In [4]: ret Out[4]: {u‘users‘: [{u‘age‘: 25, u‘gender‘: u‘man‘, u‘mail‘: u‘[email protected]‘, u‘name‘: u‘xj‘, u‘phone‘: u‘15711112222‘}]} In [5]: type(ret) Out[5]: dict In [6]: ret. ret.clear ret.items ret.pop ret.viewitems ret.copy ret.iteritems ret.popitem ret.viewkeys ret.fromkeys ret.iterkeys ret.setdefault ret.viewvalues ret.get ret.itervalues ret.update ret.has_key ret.keys ret.values In [7]: ret[‘users‘] Out[7]: [{u‘age‘: 25, u‘gender‘: u‘man‘, u‘mail‘: u‘[email protected]‘, u‘name‘: u‘xj‘, u‘phone‘: u‘15711112222‘}] In [16]: type(ret[‘users‘]) Out[16]: list In [17]: ret[‘users‘][0] Out[17]: {u‘age‘: 25, u‘gender‘: u‘man‘, u‘mail‘: u‘[email protected]‘, u‘name‘: u‘xj‘, u‘phone‘: u‘15711112222‘} In [19]: ret[‘users‘][0]["age"] Out[19]: 25
以上是关于Python进阶03json的主要内容,如果未能解决你的问题,请参考以下文章
我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情