Python对JSON文件操作

本文介绍了JSON的基本语法和Python中json模块的使用,包括如何将Python数据类型转换为JSON字符串(dumps/dump)以及如何从JSON字符串还原Python对象(loads/load)。通过实例展示了序列化和反序列化的具体操作,适用于数据交换和存储。
摘要由CSDN通过智能技术生成

       json是常用的一种数据交换方式,由于其结构清晰,易于阅读且方便解析的特点,已被非常多的动态编程语言所支持。

json的语法规则

  1. json数据是使用大括号括起来的。
  2. 数据是以“名称:值”对的形式呈现,名称和值之间用冒号分隔。
  3. 名称必须使用双引号引起来,值根据其数据类型而定。
  4. 数据之间使用逗号分隔。

json格式数据:{“name”:"zhangsan","age":24}。

json值类型

  • 数字(整数和浮点数),如{"age":24}
  • 字符串,如{“name”:"zhangsan"}
  • 布尔值(True/False),如{"flag":True}
  • 列表(在中括号中),如{"sites":["name","url"]}
  • 对象(在大括号中),如{"student":{“name”:"zhangsan"}}
  • null,如{"age":null}

python处理json格式数据

Python 3.x版本自带json模块,不需要自己安装,json模块用于字符串和json数据类型之间的转换。

序列化:将python的数据类型转换为json格式的字符串

反序列化:将json格式的字符串转换成python的数据类型

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

  • dumps():将Python数据类型转换成字符串 
  • dump():将Python数据类型转换成字符串并写入文件中。
  • loads():将字符串转换成Python数据类型
  • load():将文件打开并把字符串转换成数据类型

1、dumps()将字典转换成字符串

#coding:utf-8
import json
dict1 = {"name":"zhangsan","age":24}
print(dict1)
print(type(dict1))
#dumps将字典转换成字符串
js1 = json.dumps(dict1)
print(js1)
print(type(js1))

执行结果:

{'name': 'zhangsan', 'age': 24}
<class 'dict'>
{"name":"zhangsan","age":24}
<class 'str'>

2、dump()将Python数据类型转换成字符串并写入txt文件中

#coding:utf-8
import json
dict1 = {"name":"zhangsan","age":24}
print(dict1)
print(type(dict1))
#将字典数据写入text.txt文件中
with open("text.txt",'w') as f:
    js1 = json.dump(dict1,f)
    print(js1)
    print(type(js1))

执行结果:

{'name': 'zhangsan', 'age': 24}
<class 'dict'>
None
<class 'NoneType'>

3、loads()将字符串转换成字典

#coding:utf-8
import json

str = '{"name":"zhangsan","age":24}'
print(str)
print(type(str))
#loads将字符串转换成字典
dict1 = json.loads(str)
print(dict1)
print(type(dict1))

执行结果:

{"name":"zhangsan","age":24}
<class 'str'>
{'name': 'zhangsan', 'age': 24}
<class 'dict'>

4、load()将文件打开并把字符串转换成字典

#coding:utf-8
import json
#打开json文件并将文件中的字符串转换成字典
with open("text1.json") as f:
    print(type(f))
    dict1 = json.load(f)
    print(dict1)
    print(type(dict1))

执行结果:

<class '_io.TextIOWrapper'>
{'name': 'zhangsan', 'age': 24}
<class 'dict'>

5、读取字典类型的数据文件

创建名为text.json的文件,文件中保存的数据内容如下:

{
  "student1":{"name": "zhangsan", "age": 24},
  "student2":{"name":"lisi","age":23},
  "student3":{"name":"wangwu","age":22}
}
#coding:utf-8
import json

#读取字典类型的数据文件
with open("text1.json") as f:
    students = json.load(f)
    print(students)
for student in students:
    name = students[student]['name']
    age = students[student]['age']
    print(name,age)

执行结果:

{'student1': {'name': 'zhangsan', 'age': 24}, 'student2': {'name': 'lisi', 'age': 23}, 'student3': {'name': 'wangwu', 'age': 22}}
zhangsan 24
lisi 23
wangwu 22

6、读取列表类型的数据文件

#coding:utf-8
import json

list1 = [{"name":"zhangsan","age":24},{'name': 'lisi', 'age': 23},{'name': 'wangwu', 'age': 22}]
# 将列表list1的数据写入到text2.json
with open("text2.json",'w') as f:
    js1 = json.dump(list1,f)

# 读取text2.json中的数据
with open("text2.json") as f:
    strs  = json.load(f)

for str in strs:
    print(str)
    print(str["name"])
    print(str["age"])

执行结果:

{'name': 'zhangsan', 'age': 24}
zhangsan
24
{'name': 'lisi', 'age': 23}
lisi
23
{'name': 'wangwu', 'age': 22}
wangwu
22

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值