Серилизация 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);
Работает но не совсем:
