前言
有些post的请求参数是json格式的,需要导入json模块进行处理,json是一种数据交换格式,独立于编程语言
一般常见的接口返回数据也是json格式的,我们在做判断的时候,往往只需要提取其中几个关键的参数就行,这时候就需要json来解析返回的数据了
一、json模块简介
1. json简介:json,全名 JavaScript Object Notation,是一种轻量级的数据交换格式,常用于http请求中
2. 可以用 help(json) 查看对应的源码注释内容
Encoding basic Python object hierarchies::
>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> print(json.dumps(""fooar"))
""fooar"
>>> print(json.dumps('u1234'))
"u1234"
>>> print(json.dumps('\'))
"\"
>>> print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True))
{"a": 0, "b": 0, "c": 0}
>>> from io import StringIO
>>> io = StringIO()
>>> json.dump(['streaming API'], io)
>>> io.getvalue()
'["streaming API"]'
二、encode(python ---> json)
1.首先说下为什么要 encode?
python 里面 bool 值是 True 和 False ,
json 里面 bool 值是 true 和 false ,
注意区分大小写!!! 在 python 里面写的代码,传到json里,肯定识别不了,所以需要把 python 的代码经过 encode 后成为 json 可识别的数据类型
2.举个简单例子,下图中 dict 类型经过 json.dumps() 后变成 str,True 变成了 true,False 变成了 fasle
注:查看数据类型用 type 函数
3.以下对应关系表是从 json 模块的源码里面爬出来的 .python 的数据类,经过 encode 成 json 的数据类型,对应的表如下:
| | Python | JSON |
| +-------------------+---------------+
| +-------------------+---------------+
| | dict | object |
| +-------------------+---------------+
| | list, tuple | array |
| +-------------------+---------------+
| | str, unicode | string |
| +-------------------+---------------+
| | int, long, float | number |
| +-------------------+---------------+
| | True | true |
| +-------------------+---------------+
| | False | false |
| +-------------------+---------------+
| | None | null |
| +-------------------+---------------+
三、decode(json ---> python)
1.转换操作详见代码:
#conding:utf-8
import requests
import json
d = {
"a": None, "b": True, "c": False, "d": "JODIE", "e": ["1",11], "f": ("1r",27), "g": {"h": 3, "i": "17", "j": True}
}
print(type(d))
dict_json = json.dumps(d) #字典转json
print(type(dict_json))
print(dict_json)
print("--------------------------------------")
json_dict = json.loads(dict_json) #json 转字典
print(type(json_dict))
print(json_dict)
运行后的结果:
2.同样json数据转化成python可识别的数据,对应的表关系如下
| | JSON | Python |
| +-------------------+---------------+
| +-------------------+---------------+
| | object | dict |
| +-------------------+---------------+
| | array | list |
| +-------------------+---------------+
| | string | unicode |
| +-------------------+---------------+
| | number (int) | int, long |
| +-------------------+---------------+
| | number (real) | float |
| +-------------------+---------------+
| | true | True |
| +-------------------+---------------+
| | false | False |
| +-------------------+---------------+
| | null | None |
| +-------------------+---------------+