我是Python类和JSON的初学者,我不确定我的方向是否正确。在
基本上,我有一个web服务,它在POST主体中接受JSON请求,如下所示:
{ "item" :
{
"thing" : "foo",
"flag" : true,
"language" : "en_us"
},
"numresults" : 3
}
我开始为“item”创建一个类,如下所示:
^{pr2}$所以,我的问题是:
我在python中找到了很多关于JSON的信息,我研究了jsonpickle,但我似乎无法创建一个最终输出所需嵌套字典的类。在
编辑: 多亏了Joran的建议,我坚持使用属性类,并添加了如下方法:
def jsonify(self):
return json.dumps({ "item" : self.__dict__ }, indent=4)
这一切都很成功。在
谢谢大家的帮助。在
只需向返回字典的类添加一个方法
并对结果调用tojson函数。。。或者在返回之前调用它以返回json结果。。。在
看看^{} project ;它让您定义一个面向对象的“schema”,它可以轻松地在JSON和JSON之间序列化。在
然后从JSON加载:
^{pr2}$并且
colander
为您验证数据,返回一组python对象,然后可以对这些对象执行操作。在或者,您必须创建特定的每对象处理,以便能够将Python对象转换为JSON结构,反之亦然。在
colander和dict的建议都很好。在
我只想补充一下,你应该退一步,决定如何使用这些对象。
这种通用方法的一个潜在问题是,您需要一个列表、函数或其他一些映射来决定导出哪些属性。(在colander定义和jsonify定义中可以看到这一点)。在
你可能想要这种行为,也可能不想要。在
例如,sqlalchemy项目有一些类,这些类是用像离子滤器一样的特征字段名定义的。但是对象本身存储了大量与数据库和数据库连接相关的辅助数据。在
为了只访问您关心的基础字段数据,您需要访问包装数据的私有内部dict,或者查询类中映射的列:
我并不是想把这件事搞得太复杂,我只是想建议你仔细考虑一下如何使用这些对象。如果你只想从你放进去的对象中得到相同的信息,那么一个简单的解决方案就可以了。但是,如果这些对象将具有其他类型的“私有”数据,则可能需要在不同类型的信息之间保持某种区别。在
相关问题 更多 >
编程相关推荐