我正在通过使用网络服务api实现GPS跟踪系统。
错误:
Newtonsoft.Json.dll中发生了类型为'Newtonsoft.Json.JsonSerializationException'的未处理异常
其他信息:无法将当前JSON数组(例如[1,2,3])反序列化为类型'TrackingRequest.Devices',因为该类型需要JSON对象(例如{“ name”:“ value”})来反序列化正确。
要解决此错误,可以将JSON更改为JSON对象(例如{“ name”:“ value”}),也可以将反序列化类型更改为数组或实现集合接口的类型(例如ICollection,IList),例如可以从JSON数组反序列化的列表。还可以将JsonArrayAttribute添加到类型中,以强制其从JSON数组反序列化。
这是使用Newtonsoft的json在{#1}}中使用c#的Web表单应用程序。
我的代码
HttpClient
我的课:
using (HttpClient clientKey = new HttpClient())
{
clientKey.BaseAddress = new Uri("http://api.trackingdiary.com/");
clientKey.DefaultRequestHeaders.Add("Hive-Session", key);
clientKey.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage responseKey = clientKey.GetAsync("/v2/geo/devices/list").Result;
using (HttpContent contentkey = responseKey.Content)
{
Task<string> resultKey = contentkey.ReadAsStringAsync();
Devices obj = JsonConvert.DeserializeObject<Devices>(resultKey.Result);
Console.WriteLine();
}
}
我希望对象在DataTable中执行。
JSON示例 JSON EXAMPLE
答案 0 :(得分:2)
您的JSON字符串似乎包含所讨论类型的对象数组。您正在尝试将其反序列化为单个实例,因此会出现错误。
尝试一下:
flattened_list = []
x = [[name] + prices for name,prices in population_data]
for inner_list in x:
flattened_list.extend(inner_list)
print(flattened_list)
并且请将该类重命名为单数,因为它似乎代表单个IEnumerable<Devices> devices = JsonConvert.DeserializeObject<IEnumerable<Devices>>(resultKey.Result);
。