Czytałem dwa inne posty dotyczące błędu deserializacji, ale nigdzie się nie dostałem, więc publikuję własne pytanie.Typ deserializacji JSON nie jest obsługiwany w przypadku deserializacji tablicy
Mam usługę WCF, która zwraca JSON. Po deserializacji określonego typu nie powiedzie się.
W celu umożliwienia łatwej replikacji błędu, utworzyłem kod JSON poniżej wraz z połączeniem.
Zasadniczo powinieneś być w stanie skopiować/wkleić poniższy kod i zobaczyć, że się nie udał.
Konsument musi przekształcić go w postać roboczą. s.Deserialize kończy się niepowodzeniem z komunikatem o błędzie wymienionym w tytule.
UWAGA: zdaję sobie sprawę, że w moim JSON-ie są cięcia. Te są dla wygody, aby uciec od cytatów. Dzięki.
Przykładowy kod:
var s = new JavaScriptSerializer();
var jstr =
"[{\"UserId\":1,\"WorkoutId\":1,\"WorkoutInfo\":[\"Step 1\",\"Step 2\"]},{\"UserId\":2,\"WorkoutId\":2,\"WorkoutInfo\":[\"Step 1a\",\"Step 2a\"]},{\"UserId\":5,\"WorkoutId\":0,\"WorkoutInfo\":[\"new work1\",\"new work 1\",\"new work 1\"]}]";
Workout blah = s.Deserialize<Workout>(jstr);
var response = ServicePOST<Workout>("AddUserWorkout", workout);
i klasa Workout:
public class Workout
{
public int UserId { get; set; }
public List<string> WorkoutInfo { get; set; }
}
To okazało się głupim błędem w sposobie, w jaki skonfigurowałem odpowiedź z mojego serwera WCF. Zwracam listę z jakiegoś głupiego powodu. Pomogło mi to zobaczyć. Odpowiedź zostanie zaakceptowana po przekroczeniu limitu 1 min. Dzięki –
tronious