我刚接触python,但在其他语言中,我已经能够告诉序列化器我想创建什么类型,并让它基于反射/内省反序列化或绑定属性。
如果使用jsonpickle序列化json,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不是类型化的,等等。但是,我没有理由仅仅为了进行基本的序列化而需要摆弄字典映射。
发布于 2014-08-04 03:47:51
首先,您提供的示例json输出不是jsonpickle将输出的内容。相反,您定义的TestObject的编码实例将如下所示:
'{"py/object": "__main__.TestObject", "_name": 4}'请注意,类型与实例变量一起编码。解码后的输出将神奇地恢复为原始类型:
jsonpickle.decode('{"py/object": "__main__.TestObject", "_name": 4}')将是一个TestObject实例。
https://stackoverflow.com/questions/25108056
复制相似问题