我正在尝试研究如何从 WEBAPI 调用中的 JSON 请求中提取对象列表。在这个对象列表中有一个 Dictionary 对象、一个 List 对象和一个 List> 对象。
我的 MVC 控制器的请求看起来有点像这样:
//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;
在 WEBAPI 对象中,我有这个函数接收来自 MVC 控制器的调用。这是我遇到麻烦的地方,我无法将数据从列表中取出。列表中的第一项恰好是字典。
[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];
}
如果我尝试开始使用该对象,则会收到错误消息:
Cannot cast 'myObjectList[0]' (which has an actual type of 'Newtonsoft.Json.Linq.JObject') to 'System.Collections.Generic.Dictionary<string,string>'
不幸的是,我完全不知道下一步该做什么。我似乎找不到将 List 反序列化为这些单独对象类型的方法。