【问题标题】:How can I Deserialize with Json.Net?如何使用 Json.Net 反序列化?
【发布时间】:2014-02-12 08:41:43
【问题描述】:

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

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

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

这里是代码

    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
    }

【问题讨论】:

  • IFoo dese = JsonConvert.DeserializeObject&lt;Foo&gt;(json); 有什么问题

标签: c# serialization interface json.net


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      请试试这个。

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

      【讨论】:

      • @L.B,谢谢你指出这一点,我已经删除了有问题的部分
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-27
      • 2015-02-07
      • 2012-04-09
      • 1970-01-01
      相关资源
      最近更新 更多