无法从文件序列化JSON对象

时间:2016-03-20 17:36:23

标签: c# asp.net json

由于某些原因,我无法从文件反序列化JSON对象,即使它是在代码本身内创建的变量中运行的。但当我把它换成另一条路径到我的json文件时;它说“jsonParseTest.dll中发生了类型'System.NullReferenceException'的异常,但未在用户代码中处理

附加信息:对象引用未设置为对象的实例。“并指向listOfCustomers.data。

它清楚地找到了json文件但由于某种原因无法反序列化它。可能是什么问题? Image of code

1 个答案:

答案 0 :(得分:1)

我可以看到第16行中注释掉的json,以一个名为data的对象开头,该键的值是数组中的json。并且您正在尝试在“listOfCustomers.data”中进行迭代,但是在序列化时,您只需创建一个Customer对象并将其作为参数传递给jsonConvert.SerializeObject() - 方法。

您需要创建一个新的客户列表,并将customer-object添加到名为“data”的新创建的Customer List-key中,作为Customer类型的列表。之后,您可以尝试序列化新创建的客户列表,其中包含客户类型列表。

Customer customer = new Customer { id = “234234”, name = “Mikael” };
CustomerList customerList = new CustomerList { data = new List<Customer> { customer } };
string outputJSON = JsonConvert.SerializeObject(customerList);
System.IO.File.WriteAllText(outputPath, outputJSON);

此外,我可以看到您使用两个不同的类进行序列化和反序列化,从第23行开始。

您可以简单地使用JavaScriptSerializer - 方法,而不是使用属于.net框架的JsonConvert.DeserializeObject,因为您已经在使用JsonConvert类中的其他方法。

CustomerList listOfCustomers = JsonConvert.DeserializeObject<CustomerList>(json);

这里我们使用JsonConvert.DeserializeObject - 方法并传入CustomerList类型。