json序列化:

  json的dumps方法可以将json格式数据序列为python的相关数据类型,比如str,常用于打印,另外,在序列化时,中文汉字被转换为unicode编码,在dumps函数中添加参数ensure_ascii=False可解决;dumps的indent参考可以调整显示格式,即缩进,一般设置为2。【字典中键值对,不管是单还是双引号,dumps后,都是双引号】

json反序列化:

  json的loads方法可以把python数据类型转换为json相应的数据类型格式,反序列化后可以对json数据进行各种操作;反序列化时,键值数据不能用双引号,只能用单引号(如果是双引号,可以用eval)。

键值对如果是单引号,loads报错:

json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

  

import json

print('字典'.center(10,'*'))
s1 = '{"tom":{"age":18,"sex":"男"},"jack":{"age":19,"sex":"女"}}'
s2 = "{'tome':{'age':18,'sex':'男'},'jack':{'age':19,'sex':'女'}}" # 字符串通过json.loads转字典的时候,字符串里面不能为单引号,打印s2会报错
print(json.loads(s1), type(json.loads(s1)))
# 用dumps,字典中键值变成双引号
print(json.dumps(json.loads(s1)), type(json.dumps(json.loads(s1))))
print(json.dumps(json.loads(s1),ensure_ascii=False), type(json.dumps(json.loads(s1),ensure_ascii=False)))
print(json.dumps(json.loads(s1),ensure_ascii=False,indent=2))
# 用str,字典中键值依旧是单引号
print(str(json.loads(s1)), type(str(json.loads(s1)))) # print(json.loads(s2)) # 报错
# 但是,可以通过eval将s2转换为字典
print(eval(s2), type(eval(s2)))
# dumps会将中文转换成unicode编码,加参数ensure_ascii=False解决
print(json.dumps(eval(s2)), type(json.dumps(eval(s2))))
print(json.dumps(eval(s2),ensure_ascii=False), type(json.dumps(eval(s2),ensure_ascii=False))) print('字符串--列表'.center(10,'*'))
la = '[1,2,3,4]'
lb = "[1,2,3,4]"
print(eval(la), type(eval(la)))
print(json.loads(la), type(json.loads(la))) # 字符串转列表[1, 2, 3, 4] <class 'list'>
print(json.dumps(json.loads(la)),type(json.dumps(json.loads(la)))) # 列表转字符串,[1, 2, 3, 4] <class 'str'>
print(eval(lb), type(eval(lb)))
print(json.loads(lb), type(json.loads(lb))) # 字符串转列表[1, 2, 3, 4] <class 'list'>
print(json.dumps(json.loads(lb)),type(json.dumps(json.loads(lb)))) # 列表转字符串,[1, 2, 3, 4] <class 'str'> print('列表--字符串'.center(10,'*'))
user_list = ['tom', 'jack']
user_list2 = ["tom", "jack"]
print(type(json.dumps(user_list)), json.dumps(user_list)) # 列表转字符串 <class 'str'> ["alex", "jason"]
print(type(json.dumps(user_list2)), json.dumps(user_list2))
print(type(json.dumps(user_list2)), str(user_list2)) # 双引号变单引号 print('导入、导出'.center(10,'*'))
dic = {'k1': 1, 'k2': 2}
json.dump(dic, open('db', 'w')) # 将字典序列化导入文件,写入字符串
r = json.load(open('db', 'r')) # 反序列化从文件中导出
print(r, type(r)) # {'k1': 1, 'k2': 2} <class 'dict'>

  

最新文章

  1. mongoDB index introduction
  2. 关于 android 的 view.getLeft(), getRight(), getTop(), getBottom() 的一些疑惑(坑)解答
  3. myeclipse2015CI Server显示derby服务器去除方法
  4. 关于Certificate、Provisioning Profile、App ID的介绍及其之间的关系
  5. 关于markdown的学习
  6. ionic懒加载图片
  7. AJax 跨域问题
  8. 怎么用OCR图文识别软件在MS Office中创建PDF文件
  9. kindeditor-4.1.10 结合 Asp.Net MVC 添加图片功能
  10. PHP获取Cookie模拟登录CURL(转)
  11. 多层TreeWidget可选实现
  12. Study note for Continuous Probability Distributions
  13. 20175303 2018-2019-2 《Java程序设计》第7周学习总结
  14. c++ linux socket编程 c++网络编程
  15. 打印流-PrintStream和PrintWriter
  16. VisualStudio:如何监控 ADO.NET?
  17. python核心编程笔记——Chapter7
  18. Scala面向对象和模式匹配
  19. 笔记本制作centos qcow2格式文件
  20. 【 C 】字符串常量

热门文章

  1. 在平衡树的海洋中畅游(三)——Splay
  2. RuntimeError: Python is not installed as a framework 错误解决方案
  3. Ubuntu16.04下安装破解secureCRT和secureFX的操作记录
  4. Tomcat通过Memcached实现session共享的完整部署记录
  5. C++ string简单的使用技巧
  6. sql-server安装
  7. hdu 1263 水果 结构的排序+sort自定义排序
  8. 软件工程——移动的HelloWorld
  9. github使用心得和链接
  10. Cron任务调度CronNET