我是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" }'
Run Code Online (Sandbox Code Playgroud)
我希望我可以做类似的事情:
jsonpickle.decode(jsons,TestObject)
Run Code Online (Sandbox Code Playgroud)
这是我的问题的 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));
Run Code Online (Sandbox Code Playgroud)
我知道 python 不是类型化的,等等……但是我没有理由需要为了进行基本的序列化而搞乱字典映射。
首先,您提供的示例 json 输出不是 jsonpickle 将输出的内容。相反,您定义的 TestObject 的编码实例将如下所示:
'{"py/object": "__main__.TestObject", "_name": 4}'
Run Code Online (Sandbox Code Playgroud)
请注意,类型与实例变量一起编码。解码后的输出将神奇地放回其原始类型:
jsonpickle.decode('{"py/object": "__main__.TestObject", "_name": 4}')
Run Code Online (Sandbox Code Playgroud)
将是一个 TestObject 实例。
| 归档时间: |
|
| 查看次数: |
3286 次 |
| 最近记录: |