標籤:python 序列化 json
實際上JSON就是Python字典的字串表示,但是字典作為一個複雜物件是無法直接傳遞,所以需要將其轉換成字串形式.轉換的過程也是一種序列化過程.
用json.dumps序列化為json字串格式
>>> import json>>> dic {‘Connection‘: [‘keep-alive‘], ‘Host‘: [‘127.0.0.1:5000‘], ‘Cache-Control‘: [‘max-age=0‘]}>>> jdict = json.dumps({‘Connection‘: [‘keep-alive‘], ‘Host‘: [‘127.0.0.1:5000‘], ‘Cache-Control‘: [‘max-age=0‘]})>>> print jdict{"Connection": ["keep-alive"], "Host": ["127.0.0.1:5000"], "Cache-Control": ["max-age=0"]}
雖然dic和jdict列印的字串是相同的,但是實際它們的類型是不一樣的.dic是字典類型,jdict是字串類型
<type ‘dict‘>>>> type(jdic)>>> type(jdict)<type ‘str‘>
可以用json.dumps序列化列表為json字串格式
>>> list = [1, 4, 3, 2, 5] >>> jlist = json.dumps(list)>>> print jlist[1, 4, 3, 2, 5]
list和jlist類型同樣是不一樣的
>>> type(list)<type ‘list‘>>>> type(jlist)<type ‘str‘>
json.dumps有如下多種參數
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)
key排序
>>> print json.dumps({1:‘a‘, 4:‘b‘, 3:‘c‘, 2:‘d‘, 5:‘f‘},sort_keys=True){"1": "a", "2": "d", "3": "c", "4": "b", "5": "f"}
格式對齊
>>> print json.dumps({‘4‘: 5, ‘6‘: 7}, sort_keys=True, indent=4){ "4": 5, "6": 7}
指定分隔字元
>>> json.dumps([1,2,3,{‘4‘: 5, ‘6‘: 7}], separators=(‘,‘,‘:‘))‘[1,2,3,{"4":5,"6":7}]‘
用json.dump序列化到檔案對象中
>>> json.dump({‘4‘: 5, ‘6‘: 7}, open(‘savejson.txt‘, ‘w‘))>>> print open(‘savejson.txt‘).readlines()[‘{"4": 5, "6": 7}‘]
json.dump參數和json.dumps類似
json.dump(obj, fp, 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)
json.loads把json字串還原序列化為python對象
函數簽名為:
json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])
注意這裡的”s”必須是字串,還原序列化後為unicode字元
>>> dobj = json.loads(‘{"name":"aaa", "age":18}‘)>>> type(dobj)<type ‘dict‘>>>> print dobj{u‘age‘: 18, u‘name‘: u‘aaa‘}
json.load從檔案中還原序列化為python對象
簽名為:
json.load(fp[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])
執行個體:
>>> fobj = json.load(open(‘savejson.txt‘))>>> print fobj{u‘4‘: 5, u‘6‘: 7}>>> type(fobj)<type ‘dict‘>
Python之json模組