首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当反序列化没有jsonpickle元数据/类型信息的json时,我如何告诉jsonpickle创建哪个类?

当反序列化没有jsonpickle元数据/类型信息的json时,我如何告诉jsonpickle创建哪个类?
EN

Stack Overflow用户
提问于 2014-08-04 03:02:08
回答 1查看 2.5K关注 0票数 4

我刚接触python,但在其他语言中,我已经能够告诉序列化器我想创建什么类型,并让它基于反射/内省反序列化或绑定属性。

如果使用jsonpickle序列化json,jsonpickle会将类型信息添加到json中,但是在这种情况下,我得到的json来自外部源,其中没有类型元数据。

我只想将类型信息传递给序列化程序。

代码语言:javascript
复制
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" }'

我希望我可以这样做:

代码语言:javascript
复制
jsonpickle.decode(jsons,TestObject)

下面是我的问题的一个C#示例:http://james.newtonking.com/json/help/index.html?topic=html/M_Newtonsoft_Json_JsonConvert_DeserializeObject_3.htm

c#将如下所示:

代码语言:javascript
复制
public class TestObject {
    public string Name { get;set; }
}

var json = "{ "name" : "Test" }";

var deserialized = JsonConvert.DeserializeObject(json,typeof(TestObject));

我知道python不是类型化的,等等。但是,我没有理由仅仅为了进行基本的序列化而需要摆弄字典映射。

EN

回答 1

Stack Overflow用户

发布于 2014-08-04 03:47:51

首先,您提供的示例json输出不是jsonpickle将输出的内容。相反,您定义的TestObject的编码实例将如下所示:

代码语言:javascript
复制
'{"py/object": "__main__.TestObject", "_name": 4}'

请注意,类型与实例变量一起编码。解码后的输出将神奇地恢复为原始类型:

代码语言:javascript
复制
jsonpickle.decode('{"py/object": "__main__.TestObject", "_name": 4}')

将是一个TestObject实例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25108056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档