【发布时间】:2015-06-16 11:30:59
【问题描述】:
我有以下 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 code,在CreateGenericList上抛出异常,因为调用(IList)Reflection.Instance.FastCreateInstance(pt);后方法的col变量为null。所以之后,当它尝试添加已解析的字典时,它会引发异常。
我可以配置序列化过程来确保IDbSet<T>对象被正确处理吗?
提前致谢。
PS:您也可以在github 中克隆我的 repo 以重现此问题。
【问题讨论】:
-
您可以尝试将其反序列化为 Person 的 IEnumerable 吗?
-
@Glitch100 它也失败了......
-
变成一个变量?不是 PersonContext 变量?如果是这样,那就奇怪了。
-
我觉得我没听懂您的意思...抱歉...您的意思是
var context = fastJSON.JSON.ToObject<IEnumerable<Person>>()?或者只是将IDbSet<Person>替换为IEnumerable<Person>? -
使用相同的 json 文件,当我执行
var context = fastJSON.JSON.ToObject<IEnumerable<Person>>(text);时,它会抛出 ArgumentNullException(参数名称:key)。
标签: c# reflection fastjson