import subprocess import json ports = [] res = subprocess.Popen("ls /data/mysql/",shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE) b = res.stdout.read().strip() mysql_port = b.split("\n") for p in mysql_port: ports += [{'{#MYSQLPORT}':p}] print json.dumps({'data':ports},sort_keys=True,indent=4,separators=(',',':'))
打印結果: { "data":[ { "{#MYSQLPORT}":"3306" }, { "{#MYSQLPORT}":"3307" }, { "{#MYSQLPORT}":"3308" }, { "{#MYSQLPORT}":"3309" } ] }
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的值進行排序。
Decode過程,是把json對象轉換成python對象的一個過程,常用的兩個函數是loads和load函數。區別跟dump和dumps是一樣的。