Json,全名 JavaScript Object Notation,是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。Python2.6 以上版本支持Json的编码和解码,支持python的大部分内置类型与Json进行转换。Python2.6之前的版本需要单独安装json后才能使用。
一、encode过程:
1)Serialize ``obj`` as a JSON formatted stream to ``fp`` (a
``.write()``-supporting file-like object).
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)2)Serialize ``obj`` to a JSON formatted ``str``.
dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
Skipkeys:默认值是False,如果dict的keys内的数据不是python的基本类型(str,unicode,int,long,float,bool,None),设置为False时,就会报TypeError的错误。此时设置成True,则会跳过这类key。
ensure_ascii:默认值True,如果dict内含有non-ASCII的字符,则会类似\uXXXX的显示数据,设置成False后,就能正常显示。
indent:是一个非负的整型,如果是0,或者为空,则一行显示数据,否则会换行且按照indent的数量显示前面的空白,这样打印出来的json数据也叫pretty-printed json
separators:分隔符,实际上是(item_separator, dict_separator)的一个元组,默认的就是(',',':');这表示dictionary内keys之间用“,”隔开,而KEY和value之间用“:”隔开。
encoding:默认是UTF-8,设置json数据的编码方式。
sort_keys:将数据根据keys的值进行排序。
e.g:
>>> #coding:gbk >>> >>> import json >>> dic = {'name':'小明','ID':'000001','grade':'四年级','age':'11'} >>> print(dic) {'name': '小明', 'grade': '四年级', 'ID': '000001', 'age': '11'} >>> json1 = json.dumps(dic) >>> print(json1) {"name": "\u5c0f\u660e", "grade": "\u56db\u5e74\u7ea7", "ID": "000001", "age": "11"} >>> json2 = json.dumps(dic,ensure_ascii = False,indent = 4) >>> print(json2) { "name": "小明", "grade": "四年级", "ID": "000001", "age": "11" } >>>
2、decode过程。
1)Deserialize ``fp`` (a ``.read()``-supporting file-like object containing
a JSON document) to a Python object.
load(fp, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)2)Deserialize ``s`` (a ``str`` instance containing a JSON
document) to a Python object.
loads(s, encoding=None, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
e.g:
>>> type(json2) <class 'str'> >>> type(dic) <class 'dict'> >>> pyth1 = json.loads(json2) >>> print(pyth1) {'name': '小明', 'grade': '四年级', 'ID': '000001', 'age': '11'} >>> type(pyth1) <class 'dict'> >>>