关于二维字典转换为对象注意:

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),方能达到效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值