Python中dict与JSON互相转换及文件读写详解

纸上星河
纸上星河
发布时间:2026-10-11 | 3人浏览过
原创

本文详解Python中字典(dict)与JSON字符串及文件之间的相互转换。通过json模块的dumps、loads、dump和load方法,演示如何将字典转为JSON字符串、将JSON字符串解析为字典,以及如何将数据写入JSON文件并从文件中读取JSON数据。

Python中dict与JSON的转换方法

Python内置了json模块,用于处理JSON数据。该模块提供了四个核心方法:loads()、dumps()、load()和dump()。理解这些方法的区别是进行数据转换的关键。

  • loads():将JSON字符串(str)转换为Python字典(dict)。
  • dumps():将Python字典(dict)转换为JSON字符串(str)。
  • load():从JSON文件中读取数据,并将其转换为Python字典(dict)。
  • dump():将Python字典(dict)转换为JSON字符串,并写入到文件中。

字典转JSON字符串

将字典转换为JSON字符串,通常使用json.dumps()方法。以下示例展示了如何创建一个字典,并将其转换为JSON格式的字符串。

import json
def dict_to_json():
    dict = {}
    dict['name'] = 'many'
    dict['age'] = 10
    dict['sex'] = 'male'
    print(dict) # 输出:{'name': 'many', 'age': 10, 'sex': 'male'}
    j = json.dumps(dict)
    print(j) # 输出:{"name": "many", "age": 10, "sex": "male"}
if __name__ == '__main__':
    dict_to_json()

对象转JSON字符串

在实际开发中,我们可能需要将自定义类的实例转换为JSON字符串。可以通过访问对象的__dict__属性,将对象转换为字典,然后再使用json.dumps()进行转换。

import json
def obj_to_json():
    stu = Student('007', '007', 28, 'male', '13000000000', '123@qq.com')
    print(type(stu)) # <class 'json_test.student.Student'>
    stu = stu.__dict__ # 将对象转成dict字典
    print(type(stu)) # <class 'dict'>
    print(stu) # {'id': '007', 'name': '007', 'age': 28, 'sex': 'male', 'phone': '13000000000', 'email': '123@qq.com'}
    j = json.dumps(obj=stu)
    print(j) # {"id": "007", "name": "007", "age": 28, "sex": 'male', "phone": '13000000000', "email": '123@qq.com'}
if __name__ == '__main__':
    obj_to_json()

JSON字符串转字典

将JSON字符串转换为Python字典,使用json.loads()方法。以下示例展示了如何将一个JSON字符串解析为字典。

import json
def json_to_dict():
    j = '{"id": "007", "name": "007", "age": 28, "sex": "male", "phone": "13000000000", "email": "123@qq.com"}'
    dict = json.loads(s=j)
    print(dict) # {'id': '007', 'name': '007', 'age': 28, 'sex': 'male', 'phone': '13000000000', 'email': '123@qq.com'}
if __name__ == '__main__':
    json_to_dict()

JSON字符串转对象

将JSON字符串转换为自定义类的实例,可以先使用json.loads()将JSON字符串解析为字典,然后将字典赋值给对象的__dict__属性。

import json
def json_to_obj():
    j = '{"id": "007", "name": "007", "age": 28, "sex": "male", "phone": "13000000000", "email": "123@qq.com"}'
    dict = json.loads(s=j)
    stu = Student()
    stu.__dict__ = dict
    print('id: ' + stu.id + ' name: ' + stu.name + ' age: ' + str(stu.age) + ' sex: ' + str(
        stu.sex) + ' phone: ' + stu.phone + ' email: ' + stu.email) # id: 007 name: 007 age: 28 sex: male phone: 13000000000 email: 123@qq.com
if __name__ == '__main__':
    json_to_obj()

字典写入JSON文件

将字典数据写入JSON文件,使用json.dump()方法。以下示例展示了如何将字典数据写入名为1.json的文件中。

import json
def dict_to_json_write_file():
    dict = {}
    dict['name'] = 'many'
    dict['age'] = 10
    dict['sex'] = 'male'
    print(dict) # {'name': 'many', 'age': 10, 'sex': 'male'}
    with open('1.json', 'w') as f:
        json.dump(dict, f) # 会在目录下生成一个1.json的文件,文件内容是dict数据转成的json数据
if __name__ == '__main__':
    dict_to_json_write_file()

从JSON文件读取字典

从JSON文件中读取数据并转换为字典,使用json.load()方法。以下示例展示了如何从1.json文件中读取数据并打印出来。

import json
def json_file_to_dict():
    with open('1.json', 'r') as f:
        dict = json.load(fp=f)
        print(dict) # {'name': 'many', 'age': 10, 'sex': 'male'}
if __name__ == '__main__':
    json_file_to_dict()

以上就是Python中dict与JSON互相转换及文件读写的详细内容,更多关于Python JSON操作资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表