JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写,他的数据结构与Python中的字典一样,键值对来表示数据间的关系,可以包含列表。
在编写接口传递数据时,往往需要使用JSON对数据进行封装。python和json数据类型的转换,看作为编码与解码。
主要讲一下他的四个方法:
1json.dumps()将 Python 对象编码成 JSON对象,字符串str
2json.loads()将已编码的 JSON 字符串解码为 Python 对象
3json.dump()
4json.load()
(一)json.dumps()和json.dump()
1.都是序列化的方法,对Python对象编码
json.dumps() 将 Python 对象序列化,编码成 JSON 字符串,存在一个对应的转换表
json.dump()也是编码成json格式的字符串,但 dump必须传文件描述符,将序列化的str保存到文件中
编码:json.dumps()
Python | JSON |
dict | object |
list, tuple | array |
str | string |
int, float, int- & float-derived Enums | number |
True | true |
False | false |
None | null |
语法:json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None,
separators=None, encoding="utf-8",default=None, sort_keys=False, **kw)
# Serialize ``obj`` to a JSON formatted ``str``.
# 序列号 “obj” 数据类型 转换为 JSON格式的字符串
语法:json.dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True,allow_nan=True, cls=None, indent=None, separators=None,default=None, sort_keys=False, **kw):
obj, fp是默认的必选参数,其他可选参数
可以理解为两个动作,一个动作是将”obj“转换为JSON格式的字符串,还有一个动作是将字符串写入到文件中,也就是说文件描述符fp是必须要的参数 """
2.例句:
>>>a={ "errcode":"0", "errmsg":"" , "success":"true"} >>>type(a) dict >>>aj=json.dumps(a) >>>aj '{"errcode": "0", "errmsg": "", "success": "true"}' 把Python对象编码成json数据,字符串。 >>>type(aj) str >>>with open('D://file.txt','w') as f: >>>b=json.dump(a,f) 作用和下面形同,将数据编码并且存储到文件中。 >>>with open('D://file.txt','w') as f: >>>f.write(a)
(二)json.loads()和json.load()
1. 反序列化,是对json对象的解码
json.loads() 将 JSON 字符串解码成Python对象 ,存在一个对应转换的表
json.load() 将 JSON 字符串解码成Python对象,并将解码后的Python对象保存到文件中
解码:json.loads()
JSON | Python |
---|---|
object | dict |
array | list |
string | str |
number (int) | int |
number (real) | float |
true | True |
false | False |
null | None |
语法:与上面的相同,转换相反,将json数据解码成Python对象
2例句:
>>>b=json.loads(aj) >>>b {'errcode': '0', 'errmsg': '', 'success': 'true'} >>>type(b) dict
这是对json数据的解码,解码后为Python的字典类型。对于组成元素为字典的字符串,可以使用json.loads()方法转换为字典,例如:
>>>c='{"a":1,"e":3}' >>>type(c) str >>>d=json.loads(c) >>>d {"a":1,"e":3} >>>type(d) dict
注意:这里的字典的字符串c包含的字典的键必须为双引号,单引号无法转换。
(三)第三方demjson模块,用来编码解码json对象
demjson.encode(),python编码为json
demjson.decode(),json解码为Python
详细可以看文档demjson
>>> import demjson >>> demjson.encode( ['one',42,True,None] ) # From Python to JSON '["one",42,true,null]' >>> demjson.decode( '["one",42,true,null]' ) # From JSON to Python ['one', 42, True, None]
贴几个参考的链接: