5,000 以上のJSON.NET デシリアライゼーション エラーに追加するのは嫌いですが、次の JSON で問題を引き起こしている可能性のあるものを誰か見ることができますか? JSONLint とJSONViewerの両方が、文字列が有効であると述べています。実際、JSON.NET によって問題なくシリアル化されています。それが表す Tariff オブジェクトのクラス定義も以下に示します。
これは私を完全に困惑させました-.NETのJavascriptSerialiserクラスも使用するとまったく同じ問題が発生します。正常にシリアル化されますが、逆シリアル化すると次のエラーがスローされます。
値 [以下の JSON 文字列] 'emAPI.ClassLibrary.Tariff' の変換中にエラーが発生しました。パス ''、1 行目、位置 374。
行 1 pos 374 は、文字列の末尾にある 0 と 0.5 のピリオドの間にありdouble StandingChargeValue
、クラスで表されます。
解決方法についてのアイデアはありますか?
ありがとう、デビッド
JSON 文字列
{ "StandingChargePeriod": { "Id": 4, "Length": "Weekly", "NumbDays": 7 }, "Bands": [ { "Id": 24, "UpperkWhLimit": 23, "LowerkWhLimit": 0, "UnitRate": 2.4 }, { "Id": 25, "UpperkWhLimit": 0, "LowerkWhLimit": 24, "UnitRate": 5.8 }, { "Id": 26, "UpperkWhLimit": -1, "LowerkWhLimit": 0, "UnitRate": 5.8 } ], "Id": 10, "StartDate": "2012-12-07T00:00:00", "StandingChargeValue": 0.5 }
関税クラス定義
public class Tariff
{
[ScaffoldColumn(false)]
public int Id { get; set; }
[Required]
public DateTime StartDate { get; set; }
[Required]
[Range(0, 999999999)]
public double StandingChargeValue { get; set; }
public virtual Period StandingChargePeriod { get; set; }
public virtual ICollection<TariffBand> Bands { get; set; }
}