将IList <object>转换为List <custom object>?</custom object> </object>

时间:2012-06-16 13:41:50

标签: c# json object casting javascriptserializer

我创建了一个通用函数,它可以检索JSON并解析它:

    public IList<Object> RetrieveView(string result)
    {
        JavaScriptSerializer ser = new JavaScriptSerializer();

        IList<Object> values = ser.Deserialize< IList<Object> >(result);

        return values;
    }

我有很多使用它的类的问题。 例如,当我尝试使用它时:

IList<Receipt> receipts = (IList<Receipt>)RetrieveView(result);

我得到InvalidCastException Unable to cast object of type 'System.Collections.Generic.List[System.Object]' to type 'System.Collections.Generic.IList[Receipt]'.

无论如何要保持我的功能Generic并能够将它投射到我的所有类/模型中?

2 个答案:

答案 0 :(得分:6)

让你的功能变得通用:

    public IList<T> RetrieveView<T>(string result)
    {
        JavaScriptSerializer ser = new JavaScriptSerializer();

        IList<T> values = ser.Deserialize< IList<T> >(result);

        return values;
    }

答案 1 :(得分:4)

如果将对象反序列化为Receipt,则可以使用Enumerable扩展。

IList<Receipt> receipts = RetrieveView(result).Cast<Receipt>().ToList();