Następująca klasa nie przekształca się w postaci szeregowej (ale przekształca się w serializację) przy użyciu System.Web.Script.Serialization.JavaScriptSerializer
.Nie można odserializować Nullewartowanej KeyValuePair z JSON z ASP.NET AJAX
public class foo {
public KeyValuePair<string, string>? bar {get;set;}
}
Próba deserializowania wyniki w System.NullReferenceException
gdy System.Web.Script.Serialization.ObjectConverter.ConvertDictionaryToObject
osiąga właściwość bar
. (Uwaga: jest to przypuszczenie oparte na śledzeniu stosu.)
Zmiana typu właściwości na KeyValuePair<string,string>
rozwiązuje problem, ale chciałbym zachować typ Nullable
, jeśli to w ogóle możliwe.
JSON jest dokładnie to, czego można się spodziewać:
{"foo": {
"bar": {
"Key":"Jean-Luc",
"Value":"Picard"
}
}}
Pomoc?
Deserializacja dla KeyValuePair nie naprawia powyższego błędu, ale w rzeczywistości powoduje dwa puste ciągi dla pary. tj. deserializacja powoduje utratę danych. Tak więc powyższy JSON zamienia się w KeyValue Pair z [,]! –
Noel