Deserialisieren Liste von JSON-Objekten in WebApi-Methode

Ich versuche, herauszufinden, wie extrahieren Sie eine Liste von Objekten aus einem JSON-request in einer WEBAPI Aufruf. Innerhalb dieser Liste von Objekten ist ein Dictionary-Objekt ein List-Objekt und eine Liste> object.

Meine Anfrage von meinem MVC-controller, sieht ein bisschen aus wie diese:

//Gets a list of various objects
List<object> values = new List<object>(); 
values.add(GetItem1()); //Returns a Dictionary<string, string> object
values.add(GetItem2()); //Returns a List<string> object
values.add(GetItem3()); //List<KeyValuePair<string, string>> 

var content = new StringContent(JsonConvert.SerializeObject(values), Encoding.UTF8, "application/json");
HttpResponseMessage postResult = client.PostAsync(baseURL, content).Result;

In der WEBAPI-Objekt, ich habe diese Funktion, empfängt der Anruf aus dem MVC controller. Dies ist, wo habe ich meine Probleme, ich kann nicht die Daten aus der Liste. Das erste Element in der Liste, passiert ein Wörterbuch.

[HttpPost]
public void LogError(List<object> myObjectList)
{
    Dictionary<string, string> items = (Dictionary<string, string>)myObjectList[0];
    List<string> moreItems = (List<string>)myObjectList[1];
    List<KeyValuePair<string, string>> evenMoreItems = (List<KeyValuePair<string, string>>)myObjectList[2];
}

Wenn ich versuche zu starten, mit dem Objekt, erhalte ich die Fehlermeldung:

Cannot cast 'myObjectList[0]' (which has an actual type of 'Newtonsoft.Json.Linq.JObject') to 'System.Collections.Generic.Dictionary<string,string>'

Leider bin ich völlig ratlos darüber, was als Nächstes zu tun ist. Ich kann nicht scheinen, einen Weg finden, zu Deserialisieren, die Liste in diesen einzelnen Objekt-Typen.

InformationsquelleAutor Sam | 2013-04-05
Schreibe einen Kommentar