将 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; }
}
我有以下 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; } }