0
votes

I am trying to deserialize the json which is throwing an error Value was either too large or too small for an Int32. Not sure where the problem is while looking at the stacktrace. I have tried and checked each and every column. The packlist element right at the bottom explains the columns in each section

Could somebody tell me what the problem could be

Code that calls the method to deserialize

var json = File.ReadAllText("Models\\Trigger2OutputMinified.json");    
var o = JObject.Parse(json);    
var tmp = JsonConvert.DeserializeObject<Trigger2Output>(o.ToString());

ERROR

at System.Convert.ToInt32(Double value) at System.Double.System.IConvertible.ToInt32(IFormatProvider provider) at System.Convert.ToInt32(Object value, IFormatProvider provider) at Newtonsoft.Json.JsonReader.ReadAsInt32() at Newtonsoft.Json.JsonReader.ReadForType(JsonContract contract, Boolean hasConverter) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent) at Newtonsoft.Json.Serialization.JsonSerializerProxy.DeserializeInternal(JsonReader reader, Type objectType) at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType) at CoreAnalytics.Utilities.WebApi.MinifyingJsonConverter.ReadMinified(JArray value, Type propertyType, JsonSerializer serializer) at CoreAnalytics.Utilities.WebApi.MinifyingJsonConverter.<>c__DisplayClass1_2.b__2(JToken j) at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() at System.Linq.Buffer`1..ctor(IEnumerable`1 source) at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) at CoreAnalytics.Utilities.WebApi.MinifyingJsonConverter.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter converter, JsonReader reader, Type objectType, Object existingValue) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent) at Newtonsoft.Json.Serialization.JsonSerializerProxy.DeserializeInternal(JsonReader reader, Type objectType) at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType) at CoreAnalytics.Utilities.WebApi.MinifyingJsonConverter.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter converter, JsonReader reader, Type objectType, Object existingValue) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent) at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType) at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings) at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings) at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value) at Captives.API.Tests.Models.MatlabDeserializationTest.Trigger2_Output_Deserialize_JSON_Minified() in C:\vstsprojects\Risk.Analytics.Captives\Serverside\Captives.API.Tests\Models\MatlabDeserializationTest.cs:line 57

Json

{
  "NpvResults": {
    "CommIns": [
      [
        1,
        -112000,
        -91317.124799724217,
        44800,
        36526.849919885448
      ],
      [
        2,
        -116524.800000004,
        -115186.42642741989,
        46609.919999995334,
        46074.570570973483
      ]

    ],
    "CaptiveIns": [
      [
        1,
        -112000,
        -91317.124799724217,
        44800,
        36526.849919885448,
        0,
        0,
        -2500000,
        -2038328.6785651783,
        0,
        0,
        0,
        0
      ],
      [
        2,
        -116524.800000004,
        -115186.42642741989,
        46609.919999995334,
        46074.570570973483,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0
      ]
    ],
    "SelfIns": [
      [
        1,
        -2995.0520596871575,
        -2441.9602028223035,
        1198.0208238748635,
        976.78408112892225
      ],
      [
        2,
        -2990.6443837985753,
        -2956.2946195574036,
        1196.2577535194309,
        1182.5178478229618
      ]
    ],
    "NetCost": [
      [
        0,
        -1710520784.8208315,
        -43166205.520741388,
        -11902164177.646723,
        -10191643392.825891,
        1667354579.3000901,
        -11858997972.125982
      ]
    ]
  },
  "EvaResults": {
    "CaptiveView": [
      [
        1,
        152085.99541639443,
        2500000,
        0.060834398166558029
      ],
      [
        2,
        154609.22619904767,
        2652085.9954163977,
        0.058297216531136051
      ],
      [
        3,
        155902.89180304483,
        2806695.2216154449,
        0.055546787765182772
      ]
    ],
    "ParentView": [
      [
        1,
        -128250,
        0,
        150000,
        3920,
        25670,
        2500000,
        0.010268000000001283
      ],
      [
        2,
        -136052.01156486076,
        0,
        149515.2000000074,
        4078.3680000003556,
        17541.556435139009,
        2652085.9954163977,
        0.0066142515155674306
      ],
      [
        3,
        -143983.46486887196,
        0,
        149265.50399998933,
        4159.9353599996311,
        9441.9744911277667,
        2806695.2216154449,
        0.0033640945685916796
      ],
      [
        4,
        -151981.28321836866,
        0,
        149010.81407999995,
        4243.1340672001061,
        1272.6649288315675,
        2962598.1134184771,
        0.00042958368943973602
      ],
      [
        5,
        -160047.50223759355,
        0,
        148751.03036161003,
        4327.9967485442066,
        -6968.4751274490773,
        3119834.3516099928,
        -0.0022335969153448256
      ]
    ],
    "Overall": [
      [
        0,
        3892084696.9739838,
        70206068410.301788,
        -3601571309.4484591,
        0,
        3732712742.2095885,
        103647170.87865984,
        234788603.63824561,
        70206068410.301788,
        0.055438009635116858,
        0.0033442779086571605
      ]
    ]
  },
  "EndingSurplusResults": [
    {
      "perc25":
        0,
      "perc50":
        0,
      "mean":
        0,
      "perc75":
        0,
      "perc90":
        0,
      "perc95":
        0
    }
  ],
  "FinancialStatements": {
    "IncomeStatement": [
      [
        1,
        110880,
        1120,
        112000,
        2995.0520596871575,
        7989.2402026057453,
        0,
        12000,
        89015.707737707271,
        128250,
        -733413.04952323041,
        217265.70773770701,
        -516147.34178552142,
        65179.712321312167,
        -154844.20253565657,
        152085.99541639443,
        152085.99541639443,
        -220023.91485696906,
        0.098074038056186766,
        0.10714285714284824,
        0.20521689519904321
      ],
      [
        2,
        115359.55199999372,
        1165.2479999999437,
        116524.800000004,
        2990.6443837985753,
        8429.0324747042687,
        0,
        12484.799999998904,
        92620.323141497123,
        128250,
        -756576.39066074393,
        220870.32314149709,
        -535706.06751924916,
        66261.096942449338,
        -160711.82025577407,
        154609.22619904767,
        154609.22619904767,
        -446996.83205519326,
        0.098002115073382412,
        0.10714285714284824,
        0.20514497221623959
      ],
      [
        3,
        117666.74304000707,
        1188.5529600000007,
        118855.29600000317,
        2993.8905872056421,
        8658.4925513012968,
        0,
        12734.495999999444,
        94468.416861493111,
        128250,
        -767521.2727565337,
        222718.41686149311,
        -544802.85589503986,
        66815.525058447893,
        -163440.85676851199,
        155902.89180304483,
        155902.89180304483,
        -677253.21388215246,
        0.098038400733164791,
        0.10714285714284824,
        0.2051812578760219
      ],
      [
        4,
        120020.07790080752,
        1212.3240192001031,
        121232.4019200031,
        3001.7306822136966,
        8868.2879013389193,
        0,
        12989.185920000074,
        96373.197416447671,
        128250,
        -787974.95827768347,
        224623.19741644754,
        -563351.76086123544,
        67386.95922493434,
        -169005.52825837146,
        157236.23819151349,
        157236.23819151349,
        -913645.70136545505,
        0.09791127120772182,
        0.10714285714284824,
        0.20505412835057901
      ],
      [
        5,
        122420.47945880973,
        1236.5704995840629,
        123657.04995839761,
        2996.7390565652754,
        9114.7872851512693,
        0,
        13248.969638399787,
        98296.55397828354,
        128250,
        -813485.55497470719,
        226546.55397828354,
        -586939.00099642435,
        67963.966193485045,
        -176081.70029892743,
        158582.58778479826,
        158582.58778479826,
        -1157691.3678578646,
        0.097944487158564783,
        0.10714285714284824,
        0.20508734430142217
      ]
    ],
    "CashFlow": [
      [
        1,
        112000,
        2995.0520596871575,
        12000,
        -154844.20253565657,
        0,
        251849.15047597012,
        0,
        128250,
        2500000,
        2880099.1504759672,
        0,
        0
      ],
      [
        2,
        116524.800000004,
        2990.6443837985753,
        12484.799999998904,
        -160711.82025577407,
        0,
        261761.1758719761,
        0,
        128250,
        0,
        3270110.3263479499,
        2880099.1504759672,
        0
      ],
      [
        3,
        118855.29600000317,
        2993.8905872056421,
        12734.495999999444,
        -163440.85676851199,
        0,
        266567.7661813054,
        0,
        128250,
        0,
        null,
        null,
        0
      ],
      [
        4,
        121232.4019200031,
        3001.7306822136966,
        12989.185920000074,
        -169005.52825837146,
        0,
        274247.01357615611,
        0,
        128250,
        0,
        null,
        null,
        0
      ],
      [
        5,
        123657.04995839761,
        2996.7390565652754,
        13248.969638399787,
        -176081.70029892743,
        0,
        283493.04156236141,
        0,
        128250,
        0,
        null,
        null,
        0
      ]
    ],
    "BalanceSheet": [
      [
        1,
        10000000,
        -220023.91485696906,
        0,
        7989.2402026057453,
        152085.99541639443,
        10000000,
        2500000,
        0,
        2500000,
        2652085.9954163977,
        0,
        0,
        12652085.99541642,
        2660075.2356190062,
        2880099.1504759672,
        12880099.150475956
      ],
      [
        2,
        10000000,
        -446996.83205519326,
        0,
        16418.272677310033,
        154609.22619904767,
        10000000,
        2500000,
        2652085.9954163977,
        0,
        2806695.2216154449,
        0,
        0,
        12806695.22161549,
        2823113.4942927486,
        3270110.3263479499,
        13270110.326347981
      ],
      [
        3,
        10000000,
        -677253.21388215246,
        0,
        25076.765228611304,
        155902.89180304483,
        10000000,
        2500000,
        2806695.2216154449,
        0,
        2962598.1134184771,
        0,
        0,
        12962598.113418501,
        2987674.8786470997,
        null,
        null
      ],
      [
        4,
        10000000,
        -913645.70136545505,
        0,
        33945.053129950385,
        157236.23819151349,
        10000000,
        2500000,
        2962598.1134184771,
        0,
        3119834.3516099928,
        0,
        0,
        13119834.351609999,
        3153779.4047399526,
        null,
        null
      ],
      [
        5,
        10000000,
        -1157691.3678578646,
        0,
        43059.840415101455,
        158582.58778479826,
        10000000,
        2500000,
        3119834.3516099928,
        0,
        3278416.9393947939,
        0,
        0,
        13278416.939394822,
        3321476.7798099048,
        null,
        null
      ]
    ]
  },
  "PackList": [
    {
      "tblname": "CommIns",
      "cols": "year;premPaid;discountedPremPaid;taxDeduction;discountedTaxDeduction",
      "Item": "NpvResults"
    },
    {
      "tblname": "CaptiveIns",
      "cols": "year;premPaid;discountedPremPaid;taxDeduction;discountedTaxReduction;loanToParent;discountedLoanToParent;capContriDistr;discountedCapContriDistr;dividendDistr;discountedDividendDistr;terminalVal;discountedTerminalVal",
      "Item": "NpvResults"
    },
    {
      "tblname": "SelfIns",
      "cols": "year;lossesPaid;discountedLossesPaid;taxDeduction;discountedTaxDeduction",
      "Item": "NpvResults"
    },
    {
      "tblname": "NetCost",
      "cols": "layerId;commInsNetCost;selfInsNetCost;captiveInsNetCost;commVsCaptive;commVsSelf;selfVsCaptive",
      "Item": "NpvResults"
    },
    {
      "tblname": "CaptiveView",
      "cols": "year;captiveNetIncome;surplusDeployed;impliedRoi",
      "Item": "EvaResults"
    },
    {
      "tblname": "ParentView",
      "cols": "year;costOfCapDeployed;costOfRiskArb;incrCost;npvTaxBenefit;outcome;surplusDeployed;impliedRoi",
      "Item": "EvaResults"
    },
    {
      "tblname": "Overall",
      "cols": "layerId;captiveNetIncome;captiveSurplusDeployed;parentCostOfCapDeployed;parentCostOfRiskArb;parentIncrCost;parentNpvTaxBenefit;parentOutcome;parentSurplusDeployed;captiveImpliedRoi;parentImpliedRoi",
      "Item": "EvaResults"
    },
    {
      "tblname": "IncomeStatement",
      "cols": "year;directPremWritten;cededPremWritten;netPremWritten;lossesLaePaid;chgResIbnr;othrUwExp;gaExp;uwGain;netInvestmentIncome;irsDiscount;preTaxOpIncomeWithIrs;preTaxOpIncomeWithoutIrs;fedIncomeTaxWithIrs;fedIncomeTaxWithoutIrs;netOperatingIncome;netIncome;deferredTaxAssets;lossLaeRatio;expRatio;netCombinedRatio",
      "Item": "FinancialStatements"
    },
    {
      "tblname": "CashFlow",
      "cols": "year;premCollected;lossLaePaid;gaExpPaid;fedIncomeTaxPaid;othrUwExpPaid;netCashByOpActivities;loanBack;invPurchasedSold;capPaidIn;cashInvEndOfYear;cashInvStartOfYear;dividendsPaid",
      "Item": "FinancialStatements"
    },
    {
      "tblname": "BalanceSheet",
      "cols": "year;othrAssets;defFedIncTax;loanbackAsset;totLiabilities;retainedEarnings;nonControllingInt;capAdequacyReqd;capital;addnPaidInCap;shareholderEquity;additionallyNeeded;distribute;totShareholderEquity;totLiabilitiesTotShEquity;totCashInvestment;totAssets",
      "Item": "FinancialStatements"
    }
  ],
  "StressTestAnalysis": [
    {
      "curlevel": 0.050000000000000003,
      "decrease": 0.080000000000000002,
      "increase": 0.089999999999999997
    }
  ]
}

c# class

 public class CommIns
    {
        [JsonMinify]
        public int year { get; set; }
        [JsonMinify]
        public double premPaid { get; set; }
        [JsonMinify]
        public double discountedPremPaid { get; set; }
        [JsonMinify]
        public double taxDeduction { get; set; }
        [JsonMinify]
        public double discountedTaxDeduction { get; set; }
    }

    public class CaptiveIns
    {
        [JsonMinify]
        public int year { get; set; }
        [JsonMinify]
        public double premPaid { get; set; }
        [JsonMinify]
        public double discountedPremPaid { get; set; }
        [JsonMinify]
        public double taxDeduction { get; set; }
        [JsonMinify]
        public double discountedTaxDeduction { get; set; }
        [JsonMinify]
        public double loanToParent { get; set; }
        [JsonMinify]
        public double discountedLoanToParent { get; set; }
        [JsonMinify]
        public double capContriDistr { get; set; }
        [JsonMinify]
        public double discountedCapContriDistr { get; set; }
        [JsonMinify]
        public int dividendDistr { get; set; }
        [JsonMinify]
        public int discountedDividendDistr { get; set; }
        [JsonMinify]
        public int terminalVal { get; set; }
        [JsonMinify]
        public int discountedTerminalVal { get; set; }
    }


    public class SelfIns
    {
        [JsonMinify]
        public int year { get; set; }
        [JsonMinify]
        public double lossesPaid { get; set; }
        [JsonMinify]
        public double discountedLossesPaid { get; set; }
        [JsonMinify]
        public double taxDeduction { get; set; }
        [JsonMinify]
        public double discountedTaxDeduction { get; set; }
    }

    public class NetCost
    {
        [JsonMinify]
        public int layerId { get; set; }
        [JsonMinify]
        public double commInsNetCost { get; set; }
        [JsonMinify]
        public double selfInsNetCost { get; set; }
        [JsonMinify]
        public double captiveInsNetCost { get; set; }
        [JsonMinify]
        public double commVsCaptive { get; set; }
        [JsonMinify]
        public double commVsSelf { get; set; }
        [JsonMinify]
        public double selfVsCaptive { get; set; }
    }

    [JsonConverter(typeof(MinifyingJsonConverter))]
    public class NpvResults
    {
        public List<CommIns> CommIns { get; set; }
        public List<CaptiveIns> CaptiveIns { get; set; }
        public List<SelfIns> SelfIns { get; set; }
        public List<NetCost> NetCost { get; set; }
    }

    public class CaptiveView
    {
        [JsonMinify]
        public int year { get; set; }
        [JsonMinify]
        public double captiveNetIncome { get; set; }
        [JsonMinify]
        public double surplusDeployed { get; set; }
        [JsonMinify]
        public double impliedRoi { get; set; }
    }

    public class ParentView
    {
        [JsonMinify]
        public int year { get; set; }
        [JsonMinify]
        public double costOfCapDeployed { get; set; }
        [JsonMinify]
        public int costOfRiskArb { get; set; }
        [JsonMinify]
        public int incrCost { get; set; }
        [JsonMinify]
        public double npvTaxBenefit { get; set; }
        [JsonMinify]
        public double outcome { get; set; }
        [JsonMinify]
        public double surplusDeployed { get; set; }
        [JsonMinify]
        public double impliedRoi { get; set; }
    }

    public class Overall
    {
        [JsonMinify]
        public int layerId { get; set; }
        [JsonMinify]
        public double captiveNetIncome { get; set; }
        [JsonMinify]
        public double captiveSurplusDeployed { get; set; }
        [JsonMinify]
        public double parentCostOfCapDeployed { get; set; }
        [JsonMinify]
        public int parentCostOfRiskArb { get; set; }
        [JsonMinify]
        public int parentIncrCost { get; set; }
        [JsonMinify]
        public double parentNpvTaxBenefit { get; set; }
        [JsonMinify]
        public double parentOutcome { get; set; }
        [JsonMinify]
        public double parentSurplusDeployed { get; set; }
        [JsonMinify]
        public double captiveImpliedRoi { get; set; }
        [JsonMinify]
        public double parentImpliedRoi { get; set; }
    }

    [JsonConverter(typeof(MinifyingJsonConverter))]
    public class EvaResults
    {
        public List<CaptiveView> CaptiveView { get; set; }
        public List<ParentView> ParentView { get; set; }
        public List<Overall> Overall { get; set; }
    }

    public class IncomeStatement
    {
        [JsonMinify]
        public int year { get; set; }
        [JsonMinify]
        public double directPremWritten { get; set; }
        [JsonMinify]
        public int cededPremWritten { get; set; }
        [JsonMinify]
        public double netPremWritten { get; set; }
        [JsonMinify]
        public double lossesLaePaid { get; set; }
        [JsonMinify]
        public double chgResIbnr { get; set; }
        [JsonMinify]
        public int othrUwExp { get; set; }
        [JsonMinify]
        public int gaExp { get; set; }
        [JsonMinify]
        public double uwGain { get; set; }
        [JsonMinify]
        public double netInvestmentIncome { get; set; }
        [JsonMinify]
        public double irsDiscount { get; set; }
        [JsonMinify]
        public double preTaxOpIncomeWithIrs { get; set; }
        [JsonMinify]
        public double preTaxOpIncomeWithoutIrs { get; set; }
        [JsonMinify]
        public double fedIncomeTaxWithIrs { get; set; }
        [JsonMinify]
        public double fedIncomeTaxWithoutIrs { get; set; }
        [JsonMinify]
        public double netOperatingIncome { get; set; }
        [JsonMinify]
        public double netIncome { get; set; }
        [JsonMinify]
        public double deferredTaxAssets { get; set; }
        [JsonMinify]
        public double lossLaeRatio { get; set; }
        [JsonMinify]
        public int expRatio { get; set; }
        [JsonMinify]
        public double netCombinedRatio { get; set; }
    }

    public class CashFlow
    {
        [JsonMinify]
        public int year { get; set; }
       [JsonMinify]
        public double premCollected { get; set; }
        [JsonMinify]
        public double lossLaePaid { get; set; }
        [JsonMinify]
        public int gaExpPaid { get; set; }
        [JsonMinify]
        public double fedIncomeTaxPaid { get; set; }
        [JsonMinify]
        public int othrUwExpPaid { get; set; }
        [JsonMinify]
        public double netCashByOpActivities { get; set; }
        [JsonMinify]
        public double loanBack { get; set; }
        [JsonMinify]
        public double invPurchasedSold { get; set; }
        [JsonMinify]
        public double capPaidIn { get; set; }
        [JsonMinify]
        public int dividendsPaid { get; set; }
        [JsonMinify]
        public double cashInvEndOfYear { get; set; }
        [JsonMinify]
        public double cashInvStartOfYear { get; set; }
    }

    public class BalanceSheet
    {
        [JsonMinify]
        public int year { get; set; }
        [JsonMinify]
        public int othrAssets { get; set; }
        [JsonMinify]
        public double loanbackAsset { get; set; }
        [JsonMinify]
        public double totLiabilities { get; set; }
        [JsonMinify]
        public double retainedEarnings { get; set; }
        [JsonMinify]
        public int nonControllingInt { get; set; }
        [JsonMinify]
        public int capAdequacyReqd { get; set; }
        [JsonMinify]
        public double capital { get; set; }
        [JsonMinify]
        public double addnPaidInCap { get; set; }
        [JsonMinify]
        public double shareholderEquity { get; set; }
        [JsonMinify]
        public double additionallyNeeded { get; set; }
        [JsonMinify]
        public int distribute { get; set; }
        [JsonMinify]
        public double totShareholderEquity { get; set; }
        [JsonMinify]
        public double totLiabilitiesTotShEquity { get; set; }
        [JsonMinify]
        public double totCashInvestment { get; set; }
        [JsonMinify]
        public double totAssets { get; set; }
    }

    [JsonConverter(typeof(MinifyingJsonConverter))]
    public class FinancialStatements
    {
        public List<IncomeStatement> IncomeStatement { get; set; }
        public List<CashFlow> CashFlow { get; set; }
        public List<BalanceSheet> BalanceSheet { get; set; }
    }

    public class StressTestAnalysis
    {
        public double curlevel { get; set; }
        public double decrease { get; set; }
        public double increase { get; set; }
    }

    public class EndingSurplus
    {
        public int perc25 { get; set; }
        public int perc50 { get; set; }
        public int mean { get; set; }
        public int perc75 { get; set; }
        public int perc90 { get; set; }
        public int perc95 { get; set; }
    }

    [JsonConverter(typeof(MinifyingJsonConverter))]
    public class Trigger2Output
    {
        public NpvResults NpvResults { get; set; }
        public EvaResults EvaResults { get; set; }
        public FinancialStatements FinancialStatements { get; set; }
        public List<StressTestAnalysis> StressTestAnalysis { get; set; }
        public List<EndingSurplus> EndingSurplus { get; set; }
    }
1
What is the "MinifyingJsonConverter" ?lucky
Were you able to figure out which value is causing the issue?Chetan
No that's the main issue. I am not able to find out which value is causing the problem . I initially had a old Json which didn't contain year field. It had field called age. I renamed that forks to year as per the new json structureTom

1 Answers

1
votes

This has been resolved. The technique I used was verify ball int fields and the corresponding values in the actual json file and changed the data types to double