import json
class User():
def __init__(self,name,id,sex,card):
self.name=name
self.id=id
self.sex=sex
self.card=card
class Card():
def __init__(self,cardnum,money,password):
self.cardnum=cardnum
self.money=money
self.password=password
def user2dict(func):
return func.__dict__
{"name":func.name,"id":func.id,"sex":func.sex,}
def crad2dict(func):
return {"cardnum":func.cardnum,"money":func.money,"password":func.password}
def dict2user(d):
return User(d["name"],d["id"],d["sex"],Card(d["card"]["cardnum"],d["card"]["money"],d["card"]["password"]))
def dict2card(d1):
return Card(d1["cardnum"],d1["money"],d1["password"])
if __name__ == '__main__':
dict1={}
card=Card(100,1000,1122)
use1=User("大黄",100011,"男",card )
#{"cardnum":card.cardnum,"money":card.money,"password":card.password}
with open("table.txt","w",encoding="utf-8") as f:
json.dump(use1,f,default=user2dict)
with open("table.txt","r") as f2:
res=json.loads(f2.read())
user=dict2user(res)
print(user)
dict1[user.card.cardnum]=user
print(dict1)
```
这里要注意的是.json只能将一维的字典转为对象,如果是遇到二维,这时如果直接用json.load(f,default=dict2users),会出现key值错误,这是因为json 模块只能将一维字典进行转换,这时需要将这个功能分为两步,res=json.loads(f2.read())
user=dict2user(res),方能达到效果