我是python的新手,但在其他语言中,我能够告诉序列化程序我想要创建什么类型,并让它根据反射/内省反序列化或绑定属性。
jsonpickle如果你用jsonpickle序列化它会向json添加类型信息,但是在这种情况下,我得到的json来自外部源,并且没有类型元数据。
我想将类型信息传递给序列化程序。
import jsonpickle
class TestObject(object):
@property
def name(self):
return self._name
@name.setter
def name(self, value):
self._name = value
#from an external source
jsons = '{ "name" : "Test" }'
我希望我能做的事情如下:
jsonpickle.decode(jsons,TestObject)
这是我的问题的C#示例: http://james.newtonking.com/json/help/index.html?topic=html/M_Newtonsoft_Json_JsonConvert_DeserializeObject_3.htm
c#看起来像:
public class TestObject {
public string Name { get;set; }
}
var json = "{ "name" : "Test" }";
var deserialized = JsonConvert.DeserializeObject(json,typeof(TestObject));
我知道python没有输入等等......但我没有理由为了进行基本的序列化而需要弄乱字典映射。
答案 0 :(得分:0)
首先,您提供的示例json输出不是jsonpickle将输出的内容。相反,您定义的TestObject的编码实例将如下所示:
'{"py/object": "__main__.TestObject", "_name": 4}'
请注意,类型与实例变量一起编码。解码后的输出将神奇地放回原来的类型:
jsonpickle.decode('{"py/object": "__main__.TestObject", "_name": 4}')
将是一个TestObject实例。