2014-02-12 94 views
0

我试图反序列化JSON字符串接口实例,如何使用Json.Net反序列化?

,但我的代码返回类似 “异常消息无法创建键入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 
    } 
+0

什么是错的'IFoo的DESE = JsonConvert.DeserializeObject (JSON);' –

回答

1

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

请尝试此操作。

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

@ L.B,感谢您指出了这一点,我已经删除了部分违规 – Yohannes

1

因为接口或抽象类,不能被实例化 你可以试试这个

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

由于接口和抽象类不能被实例化。你应该使用这个,

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