Ein seltsamer Fehler ließ mich meinen Kopf schlagen. Um den Verkehr über den Draht zu minimieren, werden die Feldnamen zugeordnet und entleert und dann am anderen Ende aufgeblasen. Wenn der Feldname ‚h‘ ist und die Daten ein Datetime, wird der Konverter Absturz mit:Fehler in JsonConvert.DeserializeObject <DataSet>
Newtonsoft.Json.JsonSerializationException { "Fehler beim Konvertieren Wert 2017.09.29 10.06.00 eingeben ' System.Double '. Pfad' dSTD [0] .h ', Zeile 1, Position 293. "} mit einer inneren Ausnahme von ungültiger Umwandlung von' DateTime 'nach' Double '.
Im folgenden Beispiel C# stört der erste Satz von Daten (jsonDtA) den Konverter, der zweite (jsonDtB) nicht.
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);
Der einzige Unterschied ist der Name des letzten Datenfeldes in dem json Satz, 'h' vs. 'hb'
Natürlich mein "fix" zu verwenden ist einfach nicht 'h' in meiner Deflation Map ...
Die Frage ist, warum passiert das, und ist es ein Fehler?
Ich verwende Newtonsoft.Json v10.0.3
Sieht aus wie, was auch immer du bist Deserialisieren das ‚h‘ Wert ist ein 'double' kein' Datetime "Das scheint das Problem zu sein. Dies ist höchstwahrscheinlich kein Fehler in Json.NET, sondern in Ihrem Code. – TylerBrinkley