Json反序列化流返回类型

时间:2012-04-26 12:58:43

标签: json http

嗨我有一个从http响应中返回的流。我已将其反序列化为Object(obj),并希望检查obj的类型为MyObject或string或double。程序错了还是我的概念错了。请帮忙。

DataContractJsonSerializer obj = new DataContractJsonSerializer(typeof(Object));
        Object Obj = obj.ReadObject(_stream) as Object;
        Product p = new Product();
        List<string> ls = new List<string>();
        List<DisplayProduct> displs = new List<DisplayProduct>();

         if (Obj.Equals(p))
            Console.WriteLine("PRODUCT");
        else if (Obj.Equals(ls))
            Console.WriteLine("LIST OF STRING");
        else
            Console.WriteLine("DISPLAY PRODUCT LIST");

1 个答案:

答案 0 :(得分:0)

雨,

您可以使用'is'或'as'关键字,而不是执行您要执行的操作。

不同之处在于as运算符就像一个强制转换操作。但是,如果无法进行转换,则返回null而不是引发异常。请考虑以下表达式:

expression as type

除了表达式仅被计算一次之外,它等效于以下表达式。

expression is type ? (type)expression : (type)null

如何使用as

的示例
       Derived d = new Derived();

       Base b = d as Base;

相反,如果提供的表达式为非null,则is表达式的计算结果为true,并且可以将提供的对象强制转换为提供的类型,而不会引发异常。

如果已知表达式始终为true或始终为false,则is关键字会导致编译时警告,但通常会在运行时评估类型兼容性。

以下是您使用is的方式:

if (obj is MyObject)
{
}