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

重写继承的默认支持对象(如edict、list)的嵌套JSON编码

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

重写继承的默认支持对象(如edict、list)的嵌套JSON编码

I ended up doing the following.

class ShadingInfoEnprer(json.JSONEnprer):    def _iterenpre(self, o, markers=None):        jsonPlaceholderNames = (("_ShaderInfo", ShaderInfo),      ("_ShapeInfo", ShapeInfo),      ("_NodeInfo", NodeInfo))        for jsonPlaceholderName, cls in customIterEnpre: if isinstance(o, cls):     yield '{"' + jsonPlaceholderName+ '": '     for chunk in super(ShadingInfoEnprer, self)._iterenpre(o, markers):         yield chunk     yield '}'     break        else: for chunk in super(ShadingInfoEnprer, self)._iterenpre(o, markers):     yield chunk

我想这不是最好的方法,但我在这里分享它来看看
如果有人能告诉我我做错了什么,告诉我最好的方法
这个!
请注意,我使用嵌套元组而不是字典,因为我想
保持它们列出的顺序,这样我就可以-在这个例子中-重写
如果ShaderInfo是继承自的对象,则ShaderInfo将成为u NodeInfo
节点信息。
我的译码器是按照(简化的和部分的
(代码编号):

class ShadingInfoDeprer(json.JSONDeprer):    def depre(self, obj):        obj = super(ShadingInfoDeprer,self).depre(s)        if isinstance(obj, dict): deprers = [("_set",self.setDepre),  ("_NodeInfo", self.nodeInfoDepre),  ("_ShapeInfo", self.shapeInfoDepre),  ("_ShaderInfo", self.shaderInfoDepre)] for placeholder, deprer in deprers:     if placeholder in obj:         return deprer(obj[placeholder])     else:         for k in obj:  obj[k] = self.recursiveDepre(obj[k])        elif isinstance(obj, list): for x in range(len(obj)):     obj[x] = self.recursiveDepre(obj[x])        return obj    def setDepre(self, v):        return set(v)    def nodeInfoDepre(self, v):        o = NodeInfo()        o.update(self.recursiveDepre(v))        return o    def shapeInfoDepre(self, v):        o = ShapeInfo()        o.update(self.recursiveDepre(v))        return o    def shaderInfoDepre(self, v):        o = ShaderInfo()        o.update(self.recursiveDepre(v))        return o

nodeInfoDepre方法获取输入的字典并使用它来初始化创建的NodeInfo对象的值/属性,并
返回。



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

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

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