python編程 之 json包
1,json是什麽?
JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,易於人閱讀和編寫。
我的理解就是:json是一種統一的格式化的文件,比如,一個json裏放著n行,每行是一個字典,字典裏存放著字段。
2,json.dumps
作用:用於將 Python 對象編碼成 JSON 字符串。
語法: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) #括號中是其內部自定義的參數和參數的默認值
基本用法:
import json data=[{‘a‘:1,‘b‘:2,‘c‘:3}] json=json.dumps(data) #encode the data print json,type(json) #結果是[{"a": 1, "c": 3, "b": 2}] <type ‘str‘> #很神奇,結果是字符串格式的
帶參數用法:
import json data=[{‘a‘:1,‘b‘:2,‘c‘:3,‘d‘:4}] jsondata=json.dumps(data,sort_keys=True,indent=5,separators=(‘,‘,‘:‘)) print jsondata,type(jsondata)
sort_keys:編碼成json的時候,是否按照鍵來排序。
indent:輸出的時候每行數據縮進5個空格
separators:指定鍵值對的分隔符是逗號,鍵和值的分隔符是冒號
Skipkeys:默認值是False,如果dict的keys內的數據不是python的基本類型(str,unicode,int,long,float,bool,None),設置為False時,就會報TypeError的錯誤。此時設置成True,則會跳過這類key
ensure_ascii:默認值True,如果dict內含有non-ASCII的字符,則會類似\uXXXX的顯示數據,設置成False後,就能正常顯示
encoding:默認是UTF-8,設置json數據的編碼方式。
sort_keys:將數據根據keys的值進行排序。
python轉json數據類型:
3 json.loads
作用:json.loads 用於解碼 JSON 數據。該函數返回 Python 字段的數據類型。
語法:json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])
簡單實例:(接上文實驗)
#jsondata等於[{"a":1,"b":2,"c":3,"d":4,"e":"5"}],是用dumps轉化而來 pythondata=json.loads(jsondata) print pythondata,type(pythondata) #結果是:[{u‘a‘: 1, u‘c‘: 3, u‘b‘: 2, u‘e‘: u‘5‘, u‘d‘: 4}] <type ‘list‘>
json轉python數據類型:
4,實例
- json.dumps()函數是將一個Python數據類變成json格式的編碼
- json.loads()函數是將json格式數據轉換為想要的python格式
import json def store(data): with open(‘data.json‘, ‘w‘) as fw: #將字典轉化為字符串 json_str = json.dumps(data) #python變成json fw.write(json_str) #寫到文件中 #上面兩句等同於下面這句 # json.dump(data,fw) #區分dump和dumps def load(): with open(‘data.json‘,‘r‘) as f: #文件源 data = json.load(f) #json變成python return data if __name__ == "__main__": json_data = ‘{"login":[{"username":"aa","password":"001"},{"username":"bb","password":"002"}],"register":[{"username":"cc","password":"003"},{"username":"dd","password":"004"}]}‘ # 函數是將json格式數據轉換為字典 data = json.loads(json_data) store(data) #調用第一個函數,把python編程變成json data = load() #調用第二函數:把剛剛成了的json的再變回python print(data)
python編程 之 json包