C# С;将JSON数组转换为列表<;T>;错误

C# С;将JSON数组转换为列表<;T>;错误,c#,json,C#,Json,我正在尝试编写此转换器,使其能够与所有类型一起工作。所以我使用泛型。但收到以下编译时错误 无法将数组转换为列表 [System.InvalidCastException:无法从源类型强制转换为目标类型 我不知道为什么它说我正在将数组转换为列表,而它应该向列表中添加元素。或者我如何转换它 public static List<T> ConvertToList<T> (JsonData dataArray) { List<T> dataList = new

我正在尝试编写此转换器,使其能够与所有类型一起工作。所以我使用泛型。但收到以下编译时错误

无法将数组转换为列表
[System.InvalidCastException:无法从源类型强制转换为目标类型

我不知道为什么它说我正在将数组转换为列表,而它应该向列表中添加元素。或者我如何转换它

public static List<T> ConvertToList<T> (JsonData dataArray)
{
    List<T> dataList = new List<T> ();

    if(dataArray.IsArray)
    {
        for(int i=0; i < dataArray.Count; i++)
        {
            dataList.Add ((T)(object)dataArray[i]);
        }
    }

    return dataList;
}
公共静态列表转换器列表(JsonData dataArray)
{
List dataList=新列表();
if(dataArray.IsArray)
{
对于(int i=0;i
JsonData中的对象不是您传入的任何类型的T。

我不确定您为什么要强制转换到
对象,然后强制转换到
T
。如果数据数组[I]可以强制转换到
T
,那么您不需要通过
object
到达那里。这么说,我也可以使用
as
而不是直接强制转换。这是因为您似乎并不总是知道
dataArray[I]
可以强制转换到
T

var item = dataArray[i] as T;
if (item != null)
{
    dataList.Add(item);
}

dataArray[i]
是什么类型?很明显,
dataArray[i]
中的类型不是
T
'as'仅适用于引用类型,我可能需要同时接受这两种类型。JsonData对象不能直接转换为T。