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 onodeInfoDepre方法获取输入的字典并使用它来初始化创建的NodeInfo对象的值/属性,并
返回。



