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

Problems to deserialize JSON data to IDbSet<T>

我有以下 json 数据:

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

我的 class 定义是:

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 code,在CreateGenericList上抛出异常,因为调用(IList)Reflection.Instance.FastCreateInstance(pt);后方法的col变量为null。所以之后,当它尝试添加已解析的字典时,它会引发异常。

我可以配置序列化进程以确保 IDbSet<T> 对象被正确处理吗?

提前致谢。

PS:您也可以在 github 中克隆我的存储库以重现此问题。

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

fastJSON needs concrete types and not interfaces to be defined so it knows what type to create.

So change your code to :

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