栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/662389.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号