C# NewtonSoft JSON反序列化:System.StackOverflowException

C# NewtonSoft JSON反序列化:System.StackOverflowException,c#,json,deserialization,C#,Json,Deserialization,JSON反序列化失败,出现异常System.StackOverflowException 我正在尝试反序列化以下实体。需要帮助,这是导致问题的原因 var workingJSONString = "{\"FBTOrLeaseYear\":{\"DateFrom\":\"2019-03-02T00:00:00\",\"DateTo\":\"2020-03-01T00:00:00\"},\"Registration\":\"155SQN\",\"NovatedLeaseFortnightBenefi

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
var workingJSONString=“{\'fbtoreaseyear\”:{\'DateFrom\”:“2019-03-02T00:00:00\”,“DateTo\”:“2020-03-01T00:00:00\”,“Registration\”:“155SQN\”,“NovatedLeaseFortnightBenefitGroups\”:[],“NovatedleaseAnualbenefitGroups\”:[];
var exceptionJSONString=“{\'FBTORLEASEYAR\”:{“DateFrom\”:“2019-03-02T00:00:00\”,“DateTo\”:“2020-03-01T00:00:00\”,“Registration\”:“NovatedLeaseFortnightBenefitGroups\”:[{“BenefitGroupID\”:1,“BenefitGroupName\”:“Fuel\”,“TotalAnnualBudgetAmount\”,“TotalAnnualBudgetAmount\”:4992.0000,““TotalFortnightBudgetAmount\”,“TotalBudgetAmount\”:192.33\”两周花费总额\“:141.59276595744680851063829788,\“TotalProjAnnualAmount\”:3681.4119148936170212765957447,\“TotalVariationAmount\”:1310.5880851063829787234042553,\“AverageSpentPercentage\”:14.64549946581196666666666666667,\“NovatedLeaseBudgetSpextDataForefits\”:[],“NovatedLeaseAnualBenefitGroups\”:[[];
Test.Entities.NovatedLeaseBenefitsBudgetSpentFBTYear novatedLeaseBenefitsBudgetSpentFBTYearResponse=new Test.Entities.NovatedLeaseBenefitsBudgetSpentFBTYear();
NovatedLeaseBenefitsBudgetSpentfByYearResponse=JsonConvert.DeserializeObject(JSONString除外);//这里抛出异常
实体:

反序列化“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; }
}
公共类NovatedLeaseBenefitsBudgetSpentfByYear
{
公共FBTORLEASEYAR FBTORLEASEYAR{get;set;}
公共字符串注册{get;set;}
公共列表NovatedLeaseFortnightBenefitGroups{get;set;}
公共列表NovatedLeaseAnualBenefitGroups{get;set;}
}
公共类NovatedLeaseBenefitGroup
{
public int BenefitGroupID{get;set;}
公共字符串BenefitGroupName{get;set;}
公共双重TotalAnnualBudgetAmount{get;set;}
公共双总双周预算数{get;set;}
公共双TotalSpentToDate{get;set;}
公共双总计两周{get;set;}
公共双TotalProjAnnualAmount{get;set;}
公共双TotalVariationAmount{get;set;}
公共双平均百分比{get;set;}
公共列表NovatedLeaseBudgetSpentDataForBeefinefits{get;set;}
}
公共类NovatedLeaseBudgetSpentDataForBenefit
{
public int BenefitId{get;set;}
公共字符串BenefitName{get;set;}
公共双年度预算数{get;set;}
公共双双周预算数{get;set;}
公共双SpentToDate{get;set;}
公共双双周{get;set;}
公共双ProjAnnualAmount{get;set;}
公共双变量金额{get;set;}
公共双支出百分比{get;set;}
}
公共类FBTORLEASEYAR
{
公共字符串DateFrom{get;set;}
公共字符串DateTo{get;set;}
}

请共享FBTORLEASEYARTH的结构这可能是一个递归问题。您的json中可能有递归定义的内容。@AnuViswan更新了FBTORLEASEYAR。请检查我无法重现该问题,未获取系统。StackOverflowException@EnricoMassone如果我将属性“NovatedLeaseFortnightBenefitGroups”或“NovatedLeaseAnualBenefitGroups”的数据添加到实体“NovatedLeaseBenefitsBudgetSpentfByYear”的列表中,则反序列化失败。无法在此处注意到任何递归数据。请让我知道,如果你注意到任何模式