1. 程式人生 > 實用技巧 >python物件與json相互轉換

python物件與json相互轉換

Person.py

"""
類的定義
"""


class Person:
    # 構造方法
    def __init__(self, n, a, u):
        # global name, age
        self.name = n
        self.age = a
        self.url = u

    # 普通方法
    def print_info(self):
        print('url={},name={},age={}'.format(self.url, self.name, self.age))


if __name__ == '__main__':
    person = Person('Tom', 100, 'www.baidu.com')
    person2 = Person('Jerry', 200, 'www.google.cn')
    person.print_info()
    person2.print_info()

# url=www.baidu.com,name=Tom,age=100
# url=www.google.cn,name=Jerry,age=200

object_to_json.py

"""
物件轉化為json
    1.匯入json
"""
import json
from Person import Person


def obj_to_json():
    # 初始化person物件
    # person = Person.Person('Tom', 100, 'www.baidu.com')
    person = Person('Tom', 100, 'www.baidu.com')
    print('person物件--->', person)

    # 將person物件轉化為dict
    person_dict = person.__dict__
    print('person物件轉化為dict--->', person_dict)

    # 將dict轉化為json
    person_json = json.dumps(person_dict)
    print('dict轉化為json', person_json)


def json_to_obj():
    # 使用上面生成的person_json
    obj_json = '{"name": "Tom", "age": 100, "url": "www.baidu.com"}'
    print('原始json物件--->', obj_json)
    # json轉化為dict
    person_dict = json.loads(obj_json)
    print('json物件轉化為dict--->', person_dict)
    # dict轉化為物件
    person = Person('', '', '')
    person.__dict__ = person_dict
    print('dict轉化為物件--->', person)


if __name__ == '__main__':
    obj_to_json()
    print('-------------------------------------------------------------------------')
    json_to_obj()

person物件---> <Person.Person object at 0x0000027FE19C5E20>
person物件轉化為dict---> {'name': 'Tom', 'age': 100, 'url': 'www.baidu.com'}
dict轉化為json {"name": "Tom", "age": 100, "url": "www.baidu.com"}

---------------------------------------------------------------------------------------------------

原始json物件---> {"name": "Tom", "age": 100, "url": "www.baidu.com"}
json物件轉化為dict---> {'name': 'Tom', 'age': 100, 'url': 'www.baidu.com'}
dict轉化為物件---> <Person.Person object at 0x0000027FE19C5E20>