# 原创文章,未经允许请勿转载

通过Python的json模块,可以将字符串形式的json数据转化为字典,也可以将Python中的字典数据转化为字符串形式的json数据。

之前使用这个模块时,都是随用随查,浅尝辄止,对模块的功能了解不深。

随着使用次数的增加,我对这个功能完善的模块有了更多的了解,记录如下。

1、json字符串转为字典

json.load / json.loads

两个方法功能类似,可选参数也相同,最大的区别在于,json.load方法接受的输入,即第一个参数,是包含json数据的文件对象,如open方法的返回对象,

json.loads接受的输入是json字符串,而非文件对象。从输入类型的区别也可以看出两者的使用场合。

可选参数包括是否需要转换整型、浮点型等数值的参数,还有一些复杂的功能,暂时没有用到,以后有机会再了解。

2、字典转换为json

json.dump / json.dumps

对应于load和loads,dump的第一个参数是对象字典,第二个参数是文件对象,可以直接将转换后的json数据写入文件,dumps的第一个参数是对象字典,其余都是可选参数。dump和dumps的可选参数相同,这些参数都相当实用,现将用到的参数记录如下:

ensure_ascii 默认为True,保证转换后的json字符串中全部是ascii字符,非ascii字符都会被转义。如果数据中存在中文或其他非ascii字符,最好将ensure_ascii设置为False,保证输出结果正常。

indent 缩进,默认为None,没有缩进,设置为正整数时,输出的格式将按照indent指定的半角空格数缩进,相当实用。

separators 设置分隔符,默认的分隔符是(',', ': '),如果需要自定义json中的分隔符,例如调整冒号前后的空格数,可以按照(item_separator, key_separator)的形式设置。

sort_keys 默认为False,设为True时,输出结果将按照字典中的key排序。

 >>> import json
>>> a = {}
>>> a[''] = 2
>>> a['ad'] = 'ertwer'
>>> a[''] = 'oierte'
>>> a[2] = [1, 'a']
>>> a['non_ascii'] = "青团 》 熊猫 ?"
>>> a['ss'] = a.copy()
>>> print(json.dumps(a)) # 默认参数输出,无缩进,中文字符都被转义
{"": [1, "a"], "": "oierte", "ss": {"ad": "ertwer", "": [1, "a"], "": "oierte", "": 2, "non_ascii": "\u9752\u56e2 \u300b \u718a\u732b \uff1f"}, "": 2, "ad": "ertwer", "non_ascii": "\u9752\u56e2 \u300b \u718a\u732b \uff1f"}
>>>
>>> print(json.dumps(a, ensure_ascii=False, indent=4)) # 四空格缩进,中文字符全部正常
{
"": [
1,
"a"
],
"": "oierte",
"ss": {
"ad": "ertwer",
"": [
1,
"a"
],
"": "oierte",
"": 2,
"non_ascii": "青团 》 熊猫 ?"
},
"": 2,
"ad": "ertwer",
"non_ascii": "青团 》 熊猫 ?"
}
>>>

最新文章

  1. Gradle配置APK自动签名完整流程
  2. 使用detours实现劫持
  3. Linux 命令集合
  4. Oracle数据库入门——物化视图日志结构
  5. 【转载】创建和使用动态链接库 (C++)
  6. ARM GCC 内嵌(inline)汇编手册
  7. 信号之abort函数
  8. HDU 3359 Kind of a Blur(高斯消元)
  9. notification:object not locked by thread before notify()
  10. Matlab - 矩阵元素引用
  11. 习惯的PHP命名规则
  12. centos手动配置IP和DNS
  13. 一、js的数据类型
  14. Oracle/Hive/Impala SQL比较1
  15. 使用C#.NET列举组合数前N项和
  16. js获取url指定参数值
  17. 浅析MSIL中间语言——基础篇(转)
  18. zxing生成二维码和条码
  19. Linux防火墙iptables的基础
  20. leetcode Sort List 对链表进行排序

热门文章

  1. PHP-------抽象和接口
  2. 练习:HPH 数据
  3. Linux关于压缩和解压缩实例
  4. 浅谈DB2在线分析处理函数
  5. 图片左右滚动控件(带倒影)——重写Gallery
  6. HDU 2092 (将表达式变成一元二次方程形式)
  7. Xcode7解决VVDocumenter 不能使用的方案
  8. 关于JS的clone()函数编写的一些问题
  9. 开发类似"音速启动"的原创工具简码"万能助手"的过程中对ztree.js与win标准控件treeview、HTMLayout树形框等优缺点的比较
  10. Linux中文件函数(一)