Python中读写json文件,需要导入json库:import json

函数

简介

功能

json.loads

json字符串 -> python对象

将json字符串解码为python对象(对象指的是字典、列表等)【操作字符串】

json.dumps

json字符串 <- python对象

将python对象编码为json字符串【操作字符串】

json.load

json文件 -> python对象

提取json文件对象中的内容,并将json字符串解码为python对象【操作文件】

json.dump

json文件 <- python对象

将python对象编码为json字符串,并存入json文件中【操作文件】


文章目录

  • 1. 读取json文件 - 解码(loads, load)
  • 1.1 使用json.loads函数解码
  • 1.2 使用json.load函数解码
  • 2. 写入json文件 - 编码(dumps, dump)
  • 2.1 使用dumps函数编码
  • 2.2 使用dump函数编码


1. 读取json文件 - 解码(loads, load)

现在有json文件test.json,文件内容如下:

{
    "name":"Mike",
    "age":20,
    "features":{"gender":"man", "hobbies":["running", "playing games", "swimming"]},
    "brother":{
        "name":"Jack",
        "age":22,
        "features":{"gender":"man", "hobbies":["reading", "watching movies"]}
    }
}

1.1 使用json.loads函数解码

import json

path = "test.json"
with open(path, 'r') as json_file:
    file_str = json_file.read()  # 读入文件内容为字符串
    print(type(file_str))
    aa = json.loads(file_str)  # 传入字符串,解码为python字典对象
    print(aa)
    print(type(aa))
'''
# 输出内容为:
<class 'str'>
{'name': 'Mike', 'age': 20, 'features': {'gender': 'man', 'hobbies': ['running', 'playing games', 'swimming']}, 'brother': {'name': 'Jack', 'age': 22, 'features': {'gender': 'man', 'hobbies': ['reading', 'watching movies']}}}
<class 'dict'>
'''

可以看出,json.loads函数将传入的字符串类型数据,转化为python字典对象,可以方便地使用字典的各种方法对数据进行操作。

1.2 使用json.load函数解码

import json

path = "test.json"
with open(path, 'r') as json_file:
    aa = json.load(json_file)  # 传入文件对象,提取文件的内容,并解码为python字典对象
    print(aa)
    print(type(aa))
    print(aa["name"])
'''
# 输出如下:
{'name': 'Mike', 'age': 20, 'features': {'gender': 'man', 'hobbies': ['running', 'playing games', 'swimming']}, 'brother': {'name': 'Jack', 'age': 22, 'features': {'gender': 'man', 'hobbies': ['reading', 'watching movies']}}}
<class 'dict'>
Mike
'''

可以看到,json.load函数直接提取文件内容,并解码为python字典。可以直接使用字典的各种方法,来对数据进行操作。

2. 写入json文件 - 编码(dumps, dump)

2.1 使用dumps函数编码

import json

path = "test2.json"
dict1 = {
    "function":"dumps",
    "name":"Jack",
    "age":22,
    "features":{"gender":"man", "hobbies":["reading", "watching movies"]}
}

# 将字典编码为字符串,并写入到json文件中
with open(path, 'w') as json_file:
    bb = json.dumps(dict1)  # 将python字典编码为json字符串
    print(type(bb))  # 输出类型为:str
    json_file.write(bb)  # 将json字符串写入到文件中

# 读取json文件,查看内容
with open(path, 'r') as json_file:
    aa = json.load(json_file)   # 传入文件对象,提取文件的内容,并解码为python字典对象
    print(aa)
    print(type(aa))  # 输出类型为:dict

'''
# 输出内容为:
<class 'str'>
{'function': 'dumps', 'name': 'Jack', 'age': 22, 'features': {'gender': 'man', 'hobbies': ['reading', 'watching movies']}}
<class 'dict'>
'''

json.dumps函数可以将python对象编码为json字符串,然后再用write函数将字符串写入到文件中,即可得到json文件。

2.2 使用dump函数编码

import json

path = "test2.json"
dict1 = {
    "function":"dump",
    "name":"Jack",
    "age":22,
    "features":{"gender":"man", "hobbies":["reading", "watching movies"]}
}

# 将字典编码为字符串,并写入到json文件中
with open(path, 'w') as json_file:
    json.dump(dict1, json_file)  # 将python字典编码为json字符串,并存入json文件中

# 读取json文件,查看内容
with open(path, 'r') as json_file:
    aa = json.load(json_file)   # 传入文件对象,提取文件的内容,并解码为python字典对象
    print(aa)
    print(type(aa))


'''
# 输出如下:
{'function': 'dump', 'name': 'Jack', 'age': 22, 'features': {'gender': 'man', 'hobbies': ['reading', 'watching movies']}}
<class 'dict'>
'''

json.dump函数接受两个参数,一个是待编码的python对象,另一个是待写入的文件对象,可以直接将python对象编码并存入文件中。