如何使用Json.Net进行反序列化?

时间:2014-02-12 08:41:44

标签: c# serialization interface json.net

我正在尝试将json字符串反序列化为接口实例,

但我的代码返回异常消息,如 '无法创建Form1 + IFoo类型的实例。 Type是接口或抽象类,无法实例化。路径'价值'

但我不能做什么?,我想解决这个案子,谢谢。

这是代码

    public interface IFoo
    {
        int value { get; }
    }

    [Serializable]
    public class Foo : IFoo
    {
        public int value
        {
            get { return 1; }
        }
    }

    public void run()
    {
        IFoo foo = new Foo();

        string json = JsonConvert.SerializeObject(foo); //it's working
        IFoo dese = JsonConvert.DeserializeObject<IFoo>(json); //but it's not working
    }

3 个答案:

答案 0 :(得分:2)

由于无法实例化接口和抽象类。你应该使用它,

     IFoo dese = JsonConvert.DeserializeObject<Foo>(json);

答案 1 :(得分:1)

错误信息很简单,它要求你不要给它一个界面。 '无法创建Form1 + IFoo类型的实例。 Type是接口或抽象类,无法实例化。路径'价值'

请试试。

var dese = JsonConvert.DeserializeObject<Foo>(json)

答案 2 :(得分:1)

因为接口或抽象类无法实例化 你可以试试这个

IFoo dese = JsonConvert.DeserializeObject<IFoo>(json); //but it's not working
Foo dese = JsonConvert.DeserializeObject<Foo>(json); //it'sworking