Ошибка десериализации данных json в ienumerable
Привет ребята,
Исключение, которое я получаю, заключается в следующем:
"Cannot deserialize the current JSON object (e.g. {\"name\":\"value\"}) into type 'System.Collections.Generic.IEnumerable`1 because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly.\r\nTo fix this error either change the JSON to a JSON array (e.g. [1,2,3]) or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.\r\nPath 'result', line 2, position 12.
я понял, что мой json возвращает одиночные данные, и я пытаюсь десериализовать интерфейс IEnumerable, чтобы я мог циклически просматривать его список.
Мои данные json:
{ "result":[ {"Alert Message":" unreachable[Down]", "Event Time":"2019-04-01 18:47:18", "Threshold Value":"Down", "Source Type":"ROUTER", "Severity":"Unreachable", "Metric Name":"Status", "Source Host":"1.1.1.1" }], "success":"true", "message":"" }
Что я уже пробовал:
Мой класс json:
class JsonData { [JsonProperty("Alert Message")] public string AlertMessage { get; set; } [JsonProperty("Event Time")] public DateTime EventTime { get; set; } [JsonProperty("Threshold Value")] public string ThresholdValue { get; set; } [JsonProperty("Source Type")] public string SourceType { get; set; } [JsonProperty("Severity")] public string Severity { get; set; } [JsonProperty("Metric Name")] public string MetricName { get; set; } [JsonProperty("Source Host")] public string SourceHost { get; set; } }
Мой код для десериализации:
using Newtonsoft.Json.Linq; using Newtonsoft.Json; class ApiDemo { string filepath = @"c:\jsonData.json"; using (StreamReader r = new StreamReader(filepath)) { var json = r.ReadToEnd(); var jobj = JObject.Parse(json); string res = jobj.ToString(); IEnumerable<result> deserializedlistobj = (IEnumerable<result>)JsonConvert.DeserializeObject(res, typeof(IEnumerable<result>));
Я не могу понять, как перебирать коллекцию с помощью Ienumerator. Любая помощь или идея будут оценены по достоинству.
Richard MacCutchan
Как говорится в сообщении, данные, которые вы пытаетесь десериализовать, не являются распознанным массивом. Кроме того, где находится определение типа "результат".