json转换为python对象

from collections import abc

class Json:
    def __init__(self,mapping):
        self._data=dict(mapping)

    def __getattr__(self, name):
        if hasattr(self._data,name):
            return getattr(self._data,name)
        else:
            try:
                obj=self._data[name]
            except KeyError:
                obj=None
            return self.build(obj)

    @classmethod
    def build(cls,obj):
        if isinstance(obj,abc.Mapping):
            return cls(obj)
        elif isinstance(obj,abc.MutableSequence):
            return  [cls.build(i) for i in obj]
        return obj

    def __getitem__(self, item):
        return self._data[item]

    def __setitem__(self, key, value):
        self._data[key]=value

    def __setattr__(self, key, value):
        if key !='_data':
            self._data[key]=value
        else:
            super().__setattr__(key,value)





dic = {"name": "dgw", "age": {1:2},'d':[{'b':3},4]}
ret = Json(dic)
print(ret)
ret.name='aaa'
print(ret.name)
print(ret.d[0].b)
print(ret.age)
print(ret._data)

斜体样式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值