如何将一个包含泛型列表的json解析为对象?

19 浏览
0 Comments

如何将一个包含泛型列表的json解析为对象?

我想将一个对象转换为json,然后将json解析回原始对象。困难在于成员中有一个泛型对象的列表。我可以将对象转换为json,但不知道如何将json解析回具有泛型类型的对象。有人知道如何做吗?

我使用的json库是Newtonsoft.Json。

感谢任何帮助。

public class TestGeneric2
{
    public void test()
    {
        MyClass myObj = new MyClass();
        List> list = new List>();
        list.Add(new Element(new C1("bbb")));
        list.Add(new Element(new C2(5.43)));
        myObj.list = list;
        // convert to json
        var json = JsonConvert.SerializeObject(myObj);
        Console.WriteLine(json);
        // parse json
        parseJson(json);
    }
    
    public void parseJson(string json)
    {
        Console.WriteLine("parsing...");
        // 如何将json解析回MyClass?
    }
}
interface IMyInterface{}
class C1 : IMyInterface
{
    public string StrValue;
    public C1(string s)
    {
        StrValue = s;
    }
}
class C2 : IMyInterface
{
    public double DoubleValue;  // 与C1不同的成员类型
    public C2(double v)
    {
        DoubleValue = v;
    }
}
class Element where T : IMyInterface
{
    public T Value;
    public Element(T value)
    {
        Value = value;
    }
}
class MyClass
{
    public List> list;
}

语句"Console.WriteLine(json);"输出

{"list":[{"Value":{"StrValue":"bbb"}},{"Value":{"DoubleValue":5.43}}]}

我不知道如何解析它,因为列表中的两个元素具有不同的类型。

0