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。