我使用boost.python和py ++创建了一个共享库。我可以从库中定义的类型实例化对象。我想通过json对这些对象进行编码/解码。
我使用jsonpickle
模块。但是,它不编码属性。我做了一些研究。最有可能出现问题,因为编码对象的__dict__
为空。
共享库中的示例类:
struct Coordinate
{
int x;
int y;
Coordinate(int aX, int aY);
};
这是python包装器:
BOOST_PYTHON_MODULE(pyplusplus_test){
bp::class_< Coordinate >( "Coordinate", bp::init< int, int >(( bp::arg("aX"), bp::arg("aY") )) )
.enable_pickling()
.def_readwrite( "x", &Coordinate::x )
.def_readwrite( "y", &Coordinate::y );
//...
}
来自python的代码片段:
cord = pyplusplus_test.Coordinate(10,10)
cord.x = 23
cord.y = -11
tmpStr = jsonpickle.encode(cord)
print tmpStr
而且,输出:
{"py/object": "pyplusplus_test.Coordinate"}
请注意,json输出中没有x
或y
。
有什么建议吗?
感谢。