相关疑难解决方法(0)

如何在JSON.NET中实现自定义JsonConverter来反序列化基类对象的列表?

我试图扩展这里给出的JSON.net示例 http://james.newtonking.com/projects/json/help/CustomCreationConverter.html

我有另一个派生自基类/接口的子类

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public class Employee : Person
{
    public string Department { get; set; }
    public string JobTitle { get; set; }
}

public class Artist : Person
{
    public string Skill { get; set; }
}

List<Person> people  = new List<Person>
{
    new Employee(),
    new Employee(),
    new Artist(),
};
Run Code Online (Sandbox Code Playgroud)

如何将Json反序列化回List <Person>

[
  {
    "Department": "Department1",
    "JobTitle": "JobTitle1",
    "FirstName": "FirstName1", …
Run Code Online (Sandbox Code Playgroud)

c# json json.net deserialization

292
推荐指数
6
解决办法
25万
查看次数

在JSON.NET中为反序列化转换接口

我正在尝试建立一个读取器,它将从各种网站中获取JSON对象(想想信息抓取)并将它们转换为C#对象.我目前正在使用JSON.NET进行反序列化过程.我遇到的问题是它不知道如何处理类中的接口级属性.所以有些本质:

public IThingy Thing
Run Code Online (Sandbox Code Playgroud)

会产生错误:

无法创建IThingy类型的实例.Type是接口或抽象类,无法实例化.

让它成为ITINGy而不是Thingy是相对重要的,因为我正在处理的代码被认为是敏感的,单元测试非常重要.对于像Thingy这样的完全成熟的对象,不可能对原子测试脚本的对象进行模拟.它们必须是一个接口.

我一直在研究JSON.NET的文档已有一段时间了,我在这个网站上找到的与此相关的问题都来自一年多以前.有帮助吗?

此外,如果重要,我的应用程序是用.NET 4.0编写的.

.net c# json json.net

116
推荐指数
10
解决办法
11万
查看次数

使用Json.NET转换器反序列化属性

我有一个类定义,其中包含一个返回接口的属性.

public class Foo
{ 
    public int Number { get; set; }

    public ISomething Thing { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

尝试使用Json.NET序列化Foo类给出了一条错误消息,例如"无法创建类型为'ISomething'的实例.ISomething可能是一个接口或抽象类."

是否有Json.NET属性或转换器可以让我指定Something在反序列化期间使用的具体类?

.net serialization json.net

84
推荐指数
6
解决办法
9万
查看次数

反序列化接口实例的集合?

我想通过json.net序列化这段代码:

public interface ITestInterface
{
    string Guid {get;set;}
}

public class TestClassThatImplementsTestInterface1
{
    public string Guid { get;set; }
}

public class TestClassThatImplementsTestInterface2
{
    public string Guid { get;set; }
}


public class ClassToSerializeViaJson
{
    public ClassToSerializeViaJson()
    {             
         this.CollectionToSerialize = new List<ITestInterface>();
         this.CollectionToSerialize.add( new TestClassThatImplementsTestInterface2() );
         this.CollectionToSerialize.add( new TestClassThatImplementsTestInterface2() );
    }
    List<ITestInterface> CollectionToSerialize { get;set; }
}
Run Code Online (Sandbox Code Playgroud)

我想用json.net序列化/反序列化ClassToSerializeViaJson.序列化工作正常,但反序列化给了我这个错误:

Newtonsoft.Json.JsonSerializationException:无法创建ITestInterface类型的实例.Type是接口或抽象类,无法实例化.

那么我该如何反序列化List<ITestInterface>集合呢?

c# json.net

59
推荐指数
6
解决办法
5万
查看次数

标签 统计

json.net ×4

c# ×3

.net ×2

json ×2

deserialization ×1

serialization ×1