将JSON数据反序列化为IDbSet <t>的问题

时间:2015-06-16 11:31:00

标签: c# reflection fastjson

我有以下json数据:

{
    "Persons": [
        { "Person": { "FirstName":"A", "Surname": "B" } },
        { "Person": { "FirstName":"C", "Surname": "D" } },
        { "Person": { "FirstName":"E", "Surname": "F" } }
    ]
}

我的班级定义是:

public class PersonContext
{
    public IDbSet<Person> Persons { get; set; }
}

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

当我使用fastJSON将其反序列化为对象时,我会收到NullReferenceException

PersonContext context = fastJSON.JSON.ToObject<PersonContext>(jsonText);

调试fastJSON的source codeCreateGenericList抛出异常,因为调用col后方法的(IList)Reflection.Instance.FastCreateInstance(pt);变量为空。所以之后,当它试图添加解析的字典时,它会引发异常。

我是否可以配置序列化过程以确保正确处理IDbSet<T>个对象?

提前致谢。

PS:你也可以在github克隆我的回购以重现这个问题。

1 个答案:

答案 0 :(得分:0)

这是我先生的问题的答案。 Mehdi Gholam(fastJSON所有者)就此thread

  

fastJSON需要具体类型而不是要定义的接口,因此它知道要创建的类型。

     

所以将代码更改为:

public class PersonContext
{
   public List<Person> Persons { get; set; }
}