python3 dict 字典 转 严格 json 亦凉 2021-07-28 13:28 465阅读 0赞 python3中的字典dict格式会将\{"a":"1","b":"2"\}的格式自动转换为\{'a': ' 1', 'b': '2'\}单引号并添加上空格, 到Java或者其他强类型中或者高版本的json下不能识别, 比如在python中将字典转换成功json后传给Java,很有可能在Java中不能识别带空格和单引号的json格式, 那么就需要在python3中把格式转换成标准的json格式,直接上代码示例: import json dict1 = {"a":"1", "b":"2"} dict2 = {"a":"1", "姓名":"马云"} # 直接转换 json1 = json.dumps(dict1) json1_1 = json.dumps(dict2) # 严格格式转换 json2 = json.dumps(dict1, separators=(',', ':'), ensure_ascii=False) json2_1 = json.dumps(dict2, separators=(',', ':'), ensure_ascii=False) # 如编码格式不能通过请求参数传递,则转换下编码格式 json3 = json.dumps(dict2, separators=(',', ':'), ensure_ascii=False).encode('utf-8').decode('latin1') print("直接转换dict1", json1) print("直接转换dict2", json1_1) print("严格格式转换dict1", json2) print("严格格式转换dict2", json2_1) print("严格格式编码转换dict2", json3) json.dumps 参数解释: 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的值进行排序。
还没有评论,来说两句吧...