由于某些原因,我无法从文件反序列化JSON对象,即使它是在代码本身内创建的变量中运行的。但当我把它换成另一条路径到我的json文件时;它说“jsonParseTest.dll中发生了类型'System.NullReferenceException'的异常,但未在用户代码中处理
附加信息:对象引用未设置为对象的实例。“并指向listOfCustomers.data。
它清楚地找到了json文件但由于某种原因无法反序列化它。可能是什么问题? Image of code
答案 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类型。