来自反序列化的json文件的有效动态的空引用

时间:2017-06-28 03:38:47

标签: c# .net json json.net

内容

嘿那里,

我正在使用Newtonsoft.Json 10.0.3的nuget包,并且在将JSON文件解析到其他对象时遇到了一些麻烦

项目本身用于将JSON文件转换为具有不同结构的XML文件

在执行代码时(请参阅末尾的代码段),我收到了Cannot perform runtime binding on a null reference异常,这确实是正确的,因为当悬停动态input.submitter.hierarchies时,您将看到&#34 ; NULL"

然而......当在观察窗口或即时窗口内检查相同内容时,我得到了正确的JObject

现在的问题是:如何解决这个问题?

代码段

JSON文件:

{
    "submitter": {
        "hierachies": [{
        }]
    }
}

C#代码:

dynamic input;
using (var reader = new StreamReader(jsonFile))
{
    input = JObject.Parse(reader.ReadToEnd(), new JsonLoadSettings() { CommentHandling = CommentHandling.Ignore, LineInfoHandling = LineInfoHandling.Ignore });
}
var obj = new SomeObject();
obj.Field = input.submitter.hierarchies[0].SomeProperty

1 个答案:

答案 0 :(得分:3)

您在C#代码中输错了...您的Json文件包含hierachies,而c#代码将其解码为hierarchies它必须与我相同。

试试这段代码:

dynamic input;
using (var reader = new StreamReader(jsonFile))
{
    input = JObject.Parse(reader.ReadToEnd(), new JsonLoadSettings() { CommentHandling = CommentHandling.Ignore, LineInfoHandling = LineInfoHandling.Ignore });
}
var obj = new SomeObject();
obj.Field = input.submitter.hierachies[0].SomeProperty