2012-03-13 64 views
1

这可能是太麻烦了,但我有一个对象,我尝试反序列化,看起来像这样:如何使用System.Runtime.Serialization.Json命名空间部分反序列化c#中的对象?

{ 
"Status": { ... a status object ... } 
"Data" : {... could be any one of 10 other data classes I have ... } 
} 

我想这个对象反序列化到响应类,看起来像这样:

public class Response 
{ 
     public Status Status; 

     public Stream Data; 
} 

然后将Data属性反序列化为另一个类。但是,如果我做的数据类型属性的流,我得到一个安全异常当我尝试反序列化。同样,如果我将它作为一个字符串,反序列化只是在数据对象上调用toString()方法(反序列化后),并将其作为属性,这是没有用的。

有什么办法可以完成这样的事情吗?我试图避免有10个不同的类,它们看起来很像Response,但只是Data属性的类型不同。如果有一种方法可以动态设置也可以解决这种情况的Data属性的类型。

感谢您的帮助!

+1

不是一个直接的答案,但它可能是很好看的其他方式http://stackoverflow.com/questions/9522044/trying-to-consume-smartystreets-json-with-json-net-cannot-deserialize-json- A/9522266#9522266 – 2012-03-13 08:02:50

+0

Hmmmmm这很酷。如果我尝试访问我的动态jsonObj的属性,实际上仍然是一个对象,我会找回该对象的JSON字符串? – Nico 2012-03-13 08:13:42

+0

“我的动态jsonObj的属性”?抱歉,我无法理解 – 2012-03-13 08:16:10

回答

-1

我总是使用Newtonsoft.Json.dll来解决这个问题。

+1

如果你不解释“如何”,这不是一个答案。 – 2012-03-13 08:05:24

+0

我最终使用它,它运作良好。 – Nico 2012-04-17 02:20:01