代码改变世界

json dumps的参数理解

2018-01-18 10:15  龙武大帝  阅读(6673)  评论(0编辑  收藏  举报
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是一样的。