Python中json的简单读写操作

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

JSON在python中分别由list和dict组成。

这是用于序列化的两个模块:

json: 用于字符串和python数据类型间进行转换

pickle: 用于python特有的类型和python的数据类型间进行转换

Json模块提供了四个功能:dumps、dump、loads、load

pickle模块提供了四个功能:dumps、dump、loads、load

json 中dumps把数据类型转换成字符串 dump把数据类型转换成字符串并存储在文件中 loads把字符串转换成数据类型 load把文件打开从字符串转换成数据类型

json是可以在不同语言之间交换数据的,而pickle只在python之间使用。json只能序列化最基本的数据类型,josn只能把常用的数据类型序列化(列表、字典、列表、字符串、数字、),如果是日期格式、类对象!josn就不行了,而pickle可以序列化所有的数据类型,包括类,函数都可以序列化。本文主要讲解json的用法.

1 读取json文件

代码如下:

importjson

file_name= "json.json"

try:

with open(file_name,"r",encoding="utf-8")as josn_file_handle:

json_obj=json.load(josn_file_handle)

print(type(json_obj))#json的标准/常用格式:第一层一般是{},第二层一般是字符串/列表/字典

#json的基本格式:最外层一般是[],第二层一般是{},第三层一般是字符串/列表/字典

print (json_obj['data']['tip'])

data_list=json_obj['data']['data']for duanzi indata_list:

duanzi_content=duanzi['group']['text']print(duanzi_content)print ("*"*50)except FileExistsError as e: #python3的语法

print ("py3文件不存在")except IOError as e: #python2的语法

print ("py2文件不存在")exceptJSONDecodeError as e:print ("JSON文件解码错误(数据格式不正确|没有内容)")

我写的是使用的python3环境, 如果是python2, print 后面无需使用()

2 将内容写入json文件

代码如下:

importjson

file_name= "user.txt"

try:

a1=dict()

a1['姓名'] = "张三"a1['年龄'] = 20a1['爱好'] = ["羽毛球", "乒乓球"]

a2=dict()

a2['姓名'] = "李四"a2['年龄'] = 25a2['爱好'] = ["篮球", "足球", "橄榄球"]

info=dict()

info['用户信息'] =[a1, a2]

info['用户个数'] = 2

#如何把字典/列表/对象转换为字符串?

json_str = json.dumps(info, ensure_ascii=False) #ensure_ascii=False禁用ascii编码

with open(file_name, "w+", encoding="utf-8") as josn_file_handle:

josn_file_handle.write(json_str)exceptFileExistsError as e:print ("py3文件不存在")

这里的文件名称没有使用 .json 后缀, 主要是方便查看写入内容的格式,即json存储格式, 方便我们了解json的存储结构

在这里 我们使用了json_str = json.dumps(info, ensure_ascii=False)来把info的数据类型转化为字符串, 如果不转换的话会出现如下错误:

总结

在做json读写操作时一定要注意传递的参数是字符串还是其他数据类型, 注意格式之间的转换问题, 否则很容易出现错误.

pythonjson中list操作_Python中json的简单读写操作相关推荐

  1. python sqlserver 数据操作_python对Excel数据进行读写操作

    python对Excel数据进行读写操作 将学习到的基础操作记录在这里,便与复习查看 1.python读取Excel工作簿.工作表 import xlrd # 读取工作簿 wb=xlrd.open_w ...

  2. python中csv文件操作_python中操作csv文件

    python中操作csv文件 读取csv improt csv f = csv.reader(open("文件路径","r")) for i in f: pri ...

  3. python中查找字符串_python中字符串操作--截取,查找,替换

    python中,对字符串的操作是最常见的,python对字符串操作有自己特殊的处理方式. 字符串的截取 python中对于字符串的索引是比较特别的,来感受一下: s = '123456789' #截取 ...

  4. python中定义数据结构_Python中的数据结构—简介

    python中定义数据结构 You have multiples algorithms, the steps of which require fetching the smallest value ...

  5. python中字典使用_python中字典的使用

    python中的字典的特性: 在字典中的元素是散列存放的,没有顺序, 在进行增删改查的时候使用字典中需要的关键字(key)即可. 一: 创建字典 1)直接定义一个: dict = {'ob1':'co ...

  6. python json文件操作_python对json的操作总结

    引言 你一定听说过 JSON 吧.JSON 是当前最常用的数据传输格式之一,纯文本,容易使用,方便阅读,最重要的是在多个场合都被大量被使用. 既然 JSON 这么好,那就让我们继续探险,去掌握 pyt ...

  7. python中相对路径_Python中的绝对路劲和相对路径

    1.绝对路径 os.path.abspath("文件名"): 显示的是一个文件的绝对路劲 eg: >>> import os >>> os.ch ...

  8. mfc从文件中读取数据_Python 中的 bytes、str 以及 unicode 区别

    从Python发展历史谈起 Python3和Python2表示字符序列的方式有所不同. Python3字符序列的两种表示为byte和str.前者的实例包含原始的8位值,即原始的字节:后者的实例包括Un ...

  9. python中函数定义_Python中函数的定义与使用

    原博文 2020-02-27 16:46 − 一.函数基本定义 定义函数的目的是为了让一段代码可以被重复使用 函数定义的语法: def 函数名([参数,参数.....]): 函数主体代码(多行代码) ...

最新文章

  1. WCF服务一:WCF服务简介
  2. 运行报表时提示输入用户名和密码
  3. 计算机管理技术学院,计算机管理论文,关于国家电网技术学院:管理平台有“三好”教学管理享轻松相关参考文献资料-免费论文范文...
  4. ubuntu tree 显示中文的方法
  5. USB口的红外条形码扫描器的另类使用
  6. 卷积神经网络中feature map的含义
  7. 7-6 查找整数 (10 分)
  8. idea 导入项目时 “Import project from external model” 和 “Create project from existing sources”的区别
  9. 银行固定资产管理系统盘点方案
  10. grub4dos修改/制作message背景文件
  11. 高级软件工程第七次作业:LLS战队Alpha敏捷冲刺5
  12. C++笔记(Ⅵ_模板)
  13. 欧拉公式推导(e^iπ+1=0)
  14. python tkinter编写界面,使用win32com操作excel获取数据生成截图后,wxpy登录微信,给租客发送房租(三)
  15. 在Mac中使用OpenNI
  16. php计算机专业毕业设计题目,计算机专业毕业论文-基于PHP的网络爬虫的设计与实现.doc...
  17. python gui学生管理系统(Python gui+MySQL数据库)
  18. CAD进阶练习(四)
  19. javacv学习之实现matlab中imfill算法(孔洞填充)
  20. 业务流程管理系统(BPMS)

热门文章

  1. eclipse设置字体大小以及更改快捷键
  2. 重启好多次路由器,还是上不了网怎么办?
  3. 微服务笔记:第一章_微服务简介|Eureka注册中心|Nacos注册中心|Nacos配置管理|Feign|Gateway服务网关
  4. 苹果iOS 15.5正式版实用小功能盘点 这11个功能你要知道
  5. Java中的继承(三)
  6. 02-BTC-数据结构
  7. 投资127亿!深圳,再添一所985
  8. 【Linux】jupyter简介,搭建和部署jupyter
  9. 复变函数与积分变换(猴博士精华版)
  10. Lab2: System Call