如何使用通用列表解析json到object?

时间:2018-03-05 20:05:19

标签: c# json list parsing generics

我想将一个对象转换为json,然后将json解析回原始对象。困难在于有一个GENERIC对象列表作为成员。我可以将对象转换为json,但不知道如何使用泛型类型将json解析回对象。有谁知道怎么做?

我使用的json库是Newtonsoft.Json。

感谢任何帮助。

public class TestGeneric2
{
    public void test()
    {
        MyClass myObj = new MyClass();

        List<Element<IMyInterface>> list = new List<Element<IMyInterface>>();

        list.Add(new Element<IMyInterface>(new C1("bbb")));
        list.Add(new Element<IMyInterface>(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...");
        // How to parse the json back to MyClass?
    }
}

interface IMyInterface{}

class C1 : IMyInterface
{
    public string StrValue;

    public C1(string s)
    {
        StrValue = s;
    }
}

class C2 : IMyInterface
{
    public double DoubleValue;  // different member type than C1

    public C2(double v)
    {
        DoubleValue = v;
    }
}

class Element<T> where T : IMyInterface
{
    public T Value;

    public Element(T value)
    {
        Value = value;
    }
}

class MyClass
{
    public List<Element<IMyInterface>> list;
}

语句“Console.WriteLine(json);”输出 { “清单”:[{ “值”:{ “strValue的”: “BBB”}},{ “值”:{ “的doubleValue”:5.43}}]} 我不知道如何解析它,因为列表中的两个元素有不同的类型。

0 个答案:

没有答案