Серилизация json в List c#

Есть Json строка:

{
  "contacts": [
    {
      "contact": {
        "username": "Lexa",
        "image_source": "image.com",
        "last_message": "bla bla bla",
        "messages": [
          {
            "message": {
              "login": "Admin",
              "login_color": "Green",
              "image_source": "link.com",
              "message": "message bla bla bla",
              "time": "11:24",
              "first_message": true
            }
          },
          {
            "message": {
              "login": "Admin",
              "login_color": "Green",
              "image_source": "link.com",
              "message": "message bla bla bla",
              "time": "11:25",
              "first_message": true
            }
          },
          {
            "message": {
              "login": "Admin",
              "login_color": "Green",
              "image_source": "link.com",
              "message": "message bla bla bla",
              "time": "11:26",
              "first_message": true
            }
          }
        ]
      }
    },
    {
      "contact": {
        "username": "Stepan",
        "image_source": "image.com",
        "last_message": "bla bla bla",
        "messages": [
          {
            "message": {
              "login": "Admin",
              "login_color": "Green",
              "image_source": "link.com",
              "message": "message bla bla bla",
              "time": "11:24",
              "first_message": true
            }
          },
          {
            "message": {
              "login": "Admin",
              "login_color": "Green",
              "image_source": "link.com",
              "message": "message bla bla bla",
              "time": "11:25",
              "first_message": true
            }
          },
          {
            "message": {
              "login": "Admin",
              "login_color": "Green",
              "image_source": "link.com",
              "message": "message bla bla bla",
              "time": "11:26",
              "first_message": true
            }
          }
        ]
      }
    },
    {
      "contact": {
        "username": "Oleg",
        "image_source": "image.com",
        "last_message": "bla bla bla",
        "messages": [
          {
            "message": {
              "login": "Admin",
              "login_color": "Green",
              "image_source": "link.com",
              "message": "message bla bla bla",
              "time": "11:24",
              "first_message": true
            }
          },
          {
            "message": {
              "login": "Admin",
              "login_color": "Green",
              "image_source": "link.com",
              "message": "message bla bla bla",
              "time": "11:25",
              "first_message": true
            }
          },
          {
            "message": {
              "login": "Admin",
              "login_color": "Green",
              "image_source": "link.com",
              "message": "message bla bla bla",
              "time": "11:26",
              "first_message": true
            }
          }
        ]
      }
    }
  ]
}

Нужно все это переделать вот в такие классы:

public class ContactData
    {
        public string Username { get; set; }
        public string ImageSource { get; set; }
        public string LastMessage { get; set; }

        public List<MessageData> Messages = new List<MessageData>();

        public ContactData(
            string username,
            string imageSource,
            string lastMessage,
            List<MessageData> messages)
        {
            Username = username;
            ImageSource = imageSource;
            LastMessage = lastMessage;
            Messages = messages;
        }
    }

public class MessageData
    {
        string Login { get; set; }
        string LoginColor { get; set; }
        string ImageSource { get; set; }
        string Message { get; set; }
        public DateTime Time { get; set; }
        public bool? FirstMessage { get; set; }

    }

Я пробовал что-то такое, просто нашел в интернете, не сработало...

public static List<ContactData> ContactDataToList(string json)
{
            var objects = (JsonConvert.DeserializeObject<ContactData[]>(json)).Cast<ContactData>().ToList();
            return objects;
}

Ошибка:

Newtonsoft.Json.JsonSerializationException: "Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'Backend.ContactData[]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly.
To 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.
Path 'contacts', line 1, position 12."

Хотелось бы серилизовать именно в List Гайдов толковых не нашел, ну или это я не понимаю...

Попробовал вот такой вариант:

var data = JsonConvert.DeserializeObject<Dictionary<string,List<ContactData>>>(json);

Работает но не совсем:

введите сюда описание изображения


Ответы (0 шт):