zoukankan      html  css  js  c++  java
  • Python之dict(或对象)与json之间的互相转化

    在Python语言中,json数据与dict字典以及对象之间的转化,是必不可少的操作。

    在Python中自带json库。通过import json导入。

    在json模块有2个方法,

    loads():将json数据转化成dict数据
    dumps():将dict数据转化成json数据
    load():读取json文件数据,转成dict数据
    dump():将dict数据转化成json数据后写入json文件
    下面是具体的示例:

    dict字典转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数据

    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数据转成dict字典

    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数据转成对象

    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的load()dump()方法的使用

    • dump()方法的使用
    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()
    • load()的使用
    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()

  • 相关阅读:
    LeetCode OJ 112. Path Sum
    LeetCode OJ 226. Invert Binary Tree
    LeetCode OJ 100. Same Tree
    LeetCode OJ 104. Maximum Depth of Binary Tree
    LeetCode OJ 111. Minimum Depth of Binary Tree
    LeetCode OJ 110. Balanced Binary Tree
    apache-jmeter-3.1的简单压力测试使用方法(下载和安装)
    JMeter入门教程
    CentOS6(CentOS7)设置静态IP 并且 能够上网
    分享好文:分享我在阿里8年,是如何一步一步走向架构师的
  • 原文地址:https://www.cnblogs.com/sea-stream/p/10310639.html
Copyright © 2011-2022 走看看