您可以为此创建自己的类。使用
__getitem__和
__setitem__获取和更新对象的
__dict__使用点表示法的值:
import jsonclass PyJSON(object): def __init__(self, d): if type(d) is str: d = json.loads(d) self.convert_json(d) def convert_json(self, d): self.__dict__ = {} for key, value in d.items(): if type(value) is dict: value = PyJSON(value) self.__dict__[key] = value def __setitem__(self, key, value): self.__dict__[key] = value def __getitem__(self, key): return self.__dict__[key]rawData = """... raw data ..."""quake = PyJSON(rawData)
按预期工作:
>>> quake.data.properties.flynn_region'OAXACA, MEXICO'
编辑 :添加
to_dict和覆盖,
__repr__以便更轻松地查看控制台中的值。重命名
convert_json为
from_dict。
import jsonclass PyJSON(object): def __init__(self, d): if type(d) is str: d = json.loads(d) self.from_dict(d) def from_dict(self, d): self.__dict__ = {} for key, value in d.items(): if type(value) is dict: value = PyJSON(value) self.__dict__[key] = value def to_dict(self): d = {} for key, value in self.__dict__.items(): if type(value) is PyJSON: value = value.to_dict() d[key] = value return d def __repr__(self): return str(self.to_dict()) def __setitem__(self, key, value): self.__dict__[key] = value def __getitem__(self, key): return self.__dict__[key]rawData = """... raw data ..."""quake = PyJSON(rawData)
之前:
>>> quake.data.geometry<__main__.PyJSON object at 0xADDRESS>
后:
>>> quake.data.geometry{'coordinates': [-95.12, 16.52, -52.0], 'type': 'Point'}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)