c# - NewtonSoft JSON 反序列化:System.StackOverflowException
问题描述
JSON 反序列化失败并出现异常 System.StackOverflowException。
我正在尝试反序列化以下实体。需要帮助,为什么这会导致问题。
var workingJSONString = "{\"FBTOrLeaseYear\":{\"DateFrom\":\"2019-03-02T00:00:00\",\"DateTo\":\"2020-03-01T00:00:00\"},\"Registration\":\"155SQN\",\"NovatedLeaseFortnightBenefitGroups\":[],\"NovatedLeaseAnnualBenefitGroups\":[]}";
var exceptionJSONString = "{\"FBTOrLeaseYear\":{\"DateFrom\":\"2019-03-02T00:00:00\",\"DateTo\":\"2020-03-01T00:00:00\"},\"Registration\":\"155SQN\",\"NovatedLeaseFortnightBenefitGroups\":[{\"BenefitGroupID\":1,\"BenefitGroupName\":\"Fuel\",\"TotalAnnualBudgetAmount\":4992.0000,\"TotalFortnightBudgetAmount\":192.0000,\"TotalSpentToDate\":3327.43,\"TotalFortnightSpent\":141.59276595744680851063829788,\"TotalProjAnnualAmount\":3681.4119148936170212765957447,\"TotalVariationAmount\":1310.5880851063829787234042553,\"AverageSpentPercentage\":14.645499465811966666666666667,\"NovatedLeaseBudgetSpentDataForBenefits\":[]}],\"NovatedLeaseAnnualBenefitGroups\":[]}";
Test.Entities.NovatedLeaseBenefitsBudgetSpentFBTYear novatedLeaseBenefitsBudgetSpentFBTYearResponse = new Test.Entities.NovatedLeaseBenefitsBudgetSpentFBTYear();
novatedLeaseBenefitsBudgetSpentFBTYearResponse = JsonConvert.DeserializeObject<Test.Entities.NovatedLeaseBenefitsBudgetSpentFBTYear>(exceptionJSONString); // Exception is thrown here
实体:
关于“Test.Entities.NovatedLeaseBenefitsBudgetSpentFBTYear”实体的反序列化,
我收到一个异常"System.StackOverflowException"。谁能帮我解释一下为什么这个 JSON 的反序列化失败了。
public class NovatedLeaseBenefitsBudgetSpentFBTYear
{
public FBTOrLeaseYear FBTOrLeaseYear { get; set; }
public string Registration { get; set; }
public List<NovatedLeaseBenefitGroup> NovatedLeaseFortnightBenefitGroups { get; set; }
public List<NovatedLeaseBenefitGroup> NovatedLeaseAnnualBenefitGroups { get; set; }
}
public class NovatedLeaseBenefitGroup
{
public int BenefitGroupID { get; set; }
public string BenefitGroupName { get; set; }
public double TotalAnnualBudgetAmount { get; set; }
public double TotalFortnightBudgetAmount { get; set; }
public double TotalSpentToDate { get; set; }
public double TotalFortnightSpent { get; set; }
public double TotalProjAnnualAmount { get; set; }
public double TotalVariationAmount { get; set; }
public double AverageSpentPercentage { get; set; }
public List<NovatedLeaseBudgetSpentDataForBenefit> NovatedLeaseBudgetSpentDataForBenefits { get; set; }
}
public class NovatedLeaseBudgetSpentDataForBenefit
{
public int BenefitId { get; set; }
public string BenefitName { get; set; }
public double AnnualBudgetAmount { get; set; }
public double FortnightBudgetAmount { get; set; }
public double SpentToDate { get; set; }
public double FortnightSpent { get; set; }
public double ProjAnnualAmount { get; set; }
public double VariationAmount { get; set; }
public double SpentPercentage { get; set; }
}
public class FBTOrLeaseYear
{
public string DateFrom { get; set; }
public string DateTo { get; set; }
}
解决方案
推荐阅读
- mysql - SQL | 限制条款 | 未达到限制
- git - 合并和提交后再次git合并?
- dependency-injection - 使用带有 DI 的 Mapster 我应该把我的映射放在哪里?
- java - 如果底层 Java 进程被终止,如何使 gradle run 终止?
- c - 如何在c中创建字母P
- python - 改进 Canny 边缘检测
- c# - Visual Studio 单元测试:内部错误无法启动测试主机
- python - Django Rest Framework,出现错误:“NoneType”对象没有属性
- python - Python - 插入排序问题
- python - 如何从 HDBSCAN 算法中提取聚类