奇妙なバグが私の頭を打ち負かしていました。フィールド上のトラフィックを最小限に抑えるために、フィールド名はマッピングされ、収縮され、その後、もう一方の端で膨らまされます。フィールド名が 'h'で、データがdatetimeの場合、コンバータは次のようにクラッシュします。JsonConvert.DeserializeObjectのバグ<DataSet>
Newtonsoft.Json.JsonSerializationException {値9/29/2017 10:06:00 AMから ' System.Double '。パス' dSTD [0] .h '、行1、位置293。 "}内部例外が' DateTime 'から' Double 'への無効なキャストを含む。
以下のc#サンプルでは、最初のデータセット(jsonDtA)がコンバータをクラッシュさせ、2番目のデータ(jsonDtB)はクラッシュしません。
string jsonDtA = "{'dSTD':[{'v':'7ac36696-9977-4bf1-b211-1be2a01da04d','av':820210,'l':'72a9f721-86e0-4070-9cd9-dfa9d3c4efdd','ab':726943,'N':1,'A':'Y','B':'N','G':'N','E':'N','D':'N','K':0.0000,'O':1,'L':1.25,'H':1.25,'ac':'ProcessTransaction','ad':5,'ae':'2017-09-29T10:06:00','af':5,'h':'2017-09-29T10:06:00'}]}";
string jsonDtB = "{'dSTD':[{'v':'7ac36696-9977-4bf1-b211-1be2a01da04d','av':820210,'l':'72a9f721-86e0-4070-9cd9-dfa9d3c4efdd','ab':726943,'N':1,'A':'Y','B':'N','G':'N','E':'N','D':'N','K':0.0000,'O':1,'L':1.25,'H':1.25,'ac':'ProcessTransaction','ad':5,'ae':'2017-09-29T10:06:00','af':5,'hb':'2017-09-29T10:06:00'}]}";
DataSet dsA = JsonConvert.DeserializeObject<DataSet>(jsonDtA);
DataSet dsB = JsonConvert.DeserializeObject<DataSet>(jsonDtB);
唯一の違いは、私の「修正」はちょうど私に「h」を使用しないことですもちろん「HB」対「H」
、JSONセットの最後のデータフィールドの名前です。デフレーションマップ...
なぜ、これはどうして起こりますか?それはバグでしょうか?
私は大文字と小文字を区別しませんDataTable
オブジェクトにNewtonsoft.Json v10.0.3
が見えますそれは問題と思われる。これはおそらくJson.NETのバグではなく、あなたのコードにあります。 – TylerBrinkley