通过help(“json”) 可以参考json库使用说明

编码后的json格式字符串紧凑输出,且无顺序,其dumps方法提供一些可选的参数,让输出的格式提高可读性。

(1)sort_keys是告诉编码器按照字典key排序(a到z)输出。

>>> import json

>>> data = [{'c': 'C', 'b':(1, 6), 'a': 'A'}]

>>> print(data)

[{'a': 'A', 'c': 'C', 'b': (1, 6)}]

>>> print(json.dumps(data,sort_keys=True))

[{"a": "A", "b": [1, 6], "c": "C"}]

(2)indent参数根据数据格式缩进显示,读起来更加清晰, indent的值,代表缩进空格式:

>>> print(json.dumps(data,sort_keys=True))

[{"a": "A", "b": [1, 6], "c": "C"}]

>>> print(json.dumps(data,sort_keys=True,indent=4))

[

{

"a": "A",

"b": [

1,

6

],

"c": "C"

}

]

(3)separators参数的作用是去掉‘,’ ‘:’后面的空格,在传输数据的过程中,越精简越好,冗余的东西全部去掉。

>>> print(json.dumps(data,sort_keys=True))

[{"a": "A", "b": [1, 6], "c": "C"}]

>>> print(json.dumps(data,sort_keys=True,separators=(',',':')))

[{"a":"A","b":[1,6],"c":"C"}]

(4)skipkeys参数,在encoding过程中,dict对象的key只可以是string对象,如果是其他类型,那么在编码过程中就会抛出ValueError的异常。skipkeys可以跳过那些非string对象当作key的处理.

>>> data2 = [{"a": "A", "b": [1,6], "c": "C", ('d',): 'D'}]

>>> print(json.dumps(data2,sort_keys=True,separators=(',',':')))

Traceback (most recent call last):

File "", line 1, in

File "/usr/lib64/python2.6/json/__init__.py", line 237, in dumps

**kw).encode(obj)

File "/usr/lib64/python2.6/json/encoder.py", line 367, in encode

chunks = list(self.iterencode(o))

File "/usr/lib64/python2.6/json/encoder.py", line 306, in _iterencode

for chunk in self._iterencode_list(o, markers):

File "/usr/lib64/python2.6/json/encoder.py", line 204, in _iterencode_list

for chunk in self._iterencode(value, markers):

File "/usr/lib64/python2.6/json/encoder.py", line 309, in _iterencode

for chunk in self._iterencode_dict(o, markers):

File "/usr/lib64/python2.6/json/encoder.py", line 268, in _iterencode_dict

raise TypeError("key {0!r} is not a string".format(key))

TypeError: key ('d',) is not a string

>>> print(json.dumps(data2,sort_keys=True,skipkeys=True))

[{"a": "A", "b": [1, 6], "c": "C"}]

(5)输出真正的中文需要指定ensure_ascii=False

如果无任何配置,或者说使用默认配置,

输出的会是‘凉凉’的ASCII字符吗,而不是真正的中文。

这是因为json.dumps 序列化时对中文默认使用的ascii编码。

>>> print(json.dumps('中国'))

"\u4e2d\u56fd"

>>> print(json.dumps('中国',ensure_ascii=False))

"中国"

python json.dumps参数_json.dumps参数之解相关推荐

  1. python json文件操作_JSON文件及Python对JSON文件的读写操作

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  2. python json dumps 自定义_Python json.dumps 自定义序列化操作

    def login_ajax(request): if request.method == "GET": return render(request, 'login_ajax.ht ...

  3. python json dumps utf8_Python2操作JSON出现乱码的解决方案

    其实刚刚写过一整篇Python编码问题的解决方案,由于JSON又是一种特殊案例(与库相关,与语言本身无关)所以就单独提出来说. 我们来看一个从网上获取json并又存到本地文件的例子 import re ...

  4. python json传参数可以传对象吗_廖雪峰的python系列教程(52)——IO编程之序列化...

    序列化 在程序运行的过程中,所有的变量都是在内存中,比如,定义一个dict: d = dict(name='Bob', age=20, score=88) 可以随时修改变量,比如把name改成'Bil ...

  5. python json.loads json.dumps(ensure_ascii = False) 汉字乱码问题解决

    python json.loads json.dumps(ensure_ascii = False) 汉字乱码问题解决 python 转换为json时候 汉字编码问题 2017年03月23日 18:5 ...

  6. python json.dumps慢_python json.dumps中文乱码问题解决

    json.dumps(var,ensure_ascii=False)并不能解决中文乱码的问题 json.dumps在不同版本的Python下会有不同的表现, 注意下面提到的中文乱码问题在Python3 ...

  7. [转载] python json 编码(dump/dumps:字典转化为json)、解码(load/loads:json转化为字典)

    参考链接: Python-Json 2 : 使用json.load/loads读取JSON文件/字符串 python json 编码(dump/dumps:字典转化为json).解码(load/loa ...

  8. python json.dumps()有中文时乱码

    python json.dumps()有中文时乱码 json.dumps() 把 Python 字典类型转换为 JSON 对象 import jsondata = {'a': 'adv. 如同,像-- ...

  9. python json模块rodas方法_json模块使用总结——Python

    # 原创文章,未经允许请勿转载 通过Python的json模块,可以将字符串形式的json数据转化为字典,也可以将Python中的字典数据转化为字符串形式的json数据. 之前使用这个模块时,都是随用 ...

最新文章

  1. C#中 ??、 ?、 ?: 、?.、?[ ] 问号
  2. 微信浏览器禁止app下载链接的两种处理方法
  3. 洛谷 P2046 BZOJ 2007 海拔(NOI2010)
  4. java调用wvsc.exe_c语言 函数的调用方法
  5. linux 故障注入_用软件中断实现的Linux内核故障注入方法
  6. 【HNOI2017】影魔
  7. OpenGL基础30:模板测试
  8. HDU-2037 今年暑假不AC
  9. PYTHON 爬虫 必应词典翻译爬取
  10. stm32之神州三号开发板 USB DFU 实现过程
  11. 天气预报:强势力的“.fans+体育”旋风正席卷全球!
  12. 优酷 IPv6 演进和实践指南
  13. 日本日野汽车因尾气数据造假问题受到调查
  14. java 图片加水印不失真_java实现图片加水印效果
  15. python开发工程师是什么级别_什么条件才能成为Python开发工程师
  16. Django请求和响应对象
  17. linux修改dns不生效,Linux 临时修改和永久修改DNS的方法
  18. IOS面试攻略(1.0)
  19. matlab坐标系无穷大,在 Matlab 中无穷大用 _______________ 表示
  20. 前端开源库 CDN 加速

热门文章

  1. 为什么谈及硬件,必言软件?软硬件协同让开源世界“阴阳调和”
  2. Rancher获4000万美元D轮融资,推动计算无处不在
  3. 2019 谷歌年度搜索关键词揭晓,技术宅的英雄梦!
  4. 分析了 3000 份 Bug 记录,可以发现什么?
  5. 你的代码,“拯救”过多少人?
  6. 性能比 GPU 高 100 倍!首款可编程忆阻器 AI 计算机面世
  7. “敏捷项目管理就是胡闹!”
  8. 5G 商用时,我们所处的智能城市会是什么样?
  9. 当我们谈论 996 的时候我们在谈论什么?
  10. 赛事招募 | 互联网创客马拉松开show啦~比武招APP