我知道这个问题以前有人问过,但我无法从以前的答案中找到或推断出答案。
我正在尝试使用 JSON.net 库将 json 字符串转换为列表。我正在尝试使用通用列表来处理转换,但它一直抛出无法隐式转换它的错误。
这是我要执行的代码。
public static List<T> Convert<T>(string jsonString, int intCounter)
{
if (intCounter == 0)
{
return (List<fooClass>)JsonConvert.DeserializeObject<List<fooClass>>(jsonString);
}
else if (intCounter == 1)
{
return (List<fooClass1>)JsonConvert.DeserializeObject<List<fooClass1>>(jsonString);
}
else if (intCounter == 2)
{
return (List<fooClass2>)JsonConvert.DeserializeObject<List<fooClass2>>(jsonString);
}
else
{
return null;
}
}
错误出现在调用 JSON.net 的每一行上。
如何使方法通用或显式转换它?
干杯。
最佳答案
你的方法应该是这样的:
public static List<T> Convert<T>(string jsonString)
{
return (List<T>)JsonConvert.DeserializeObject<List<T>>(jsonString);
}
和用法:
var result = Convert<fooClass>(jsonString);
更新
看不到任何问题,使用了以下代码:
public class FooClass1
{
public int A { get; set; }
public int B { get; set; }
}
public class FooClass2
{
public int C { get; set; }
public int D { get; set; }
}
static void Main(string[] args)
{
var foo1 = "[{\"a\": 1, \"b\": 2},{\"a\": 2, \"b\": 3}]";
var foo2 = "[{\"c\": 1, \"d\": 2},{\"c\": 2, \"d\": 3}]";
var a = Convert<FooClass1>(foo1);
var b = Convert<FooClass2>(foo2);
}
public static List<T> Convert<T>(string jsonString)
{
return JsonConvert.DeserializeObject<List<T>>(jsonString);
}
关于c# - 无法将类型 'System.Collections.Generic.list<fooClass>' 隐式转换为 'System.Collections.Generic.List<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22244940/