c# - 无法将类型 'System.Collections.Generic.list<fooClass>' 隐式转换为 'System.Collections.Generic.List<T>

标签 c# json generics

我知道这个问题以前有人问过,但我无法从以前的答案中找到或推断出答案。

我正在尝试使用 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/

相关文章:

c# - 将 View 模型转换为 View

c# - 在 C# 中存储可搜索数据的方法

c++ - 我如何用 C++ 解析 json 数组?

javascript - 如何在reactjs中循环嵌套对象?

ios - 将 IBOutlet/对象传递到可重复动画的通用函数中

java - 为什么要在 HashMap 中为 getEntry 定义对象

C#: IEnumerable, GetEnumerator, 请举个简单的例子!

c# - 在运行时加载依赖程序集时是否可以运行单元测试?

Python/Pydantic 迭代具有多个项目的帖子正文

java - 为什么 java.nio.file.DirectoryStream 使用无限泛型?