从Json字符串创建Python对象[重复]

从Json字符串创建Python对象[重复],第1张

从Json字符串创建Python对象[重复]

您可以为此创建自己的类。使用

__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'}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5668500.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存