У меня есть следующий фрагмент Json:
Article: [
{
@attributes: {
id: "10819"
},
title: "Weekend Guide and Previews",
county1: { },
county2: { },
newsid: "10819",
sections: {
section_id: [
"13",
"1"
]
},
content_text_id: "8561",
content_image_id: "6626",
content_video: "NONE",
upload_date: "2014-08-22 10:16:39",
filename: "http://www.gaa.ie/content/images/news/mayo/OSheaAidan_v_Kerry.jpg",
thumbnail: "http://www.gaa.ie/content/content_thumbs/Images/news/mayo/OSheaAidan_v_Kerry.jpg",
url: "http://www.gaa.ie/gaa-news-and-videos/daily-news/1/2208141016-weekend-guide-and-previews/1/"
},
{
@attributes: {
id: "10825"
},
title: "Press Release: Weekend Travel Information",
county1: { },
county2: { },
newsid: "10825",
sections: {
section_id: [
"13",
"1"
]
},
content_text_id: "8567",
content_image_id: "6396",
content_video: "NONE",
upload_date: "2014-08-22 17:05:13",
filename: "http://www.gaa.ie/content/images/news/croke_park/CrokePark_general_view2014.jpg",
thumbnail: "http://www.gaa.ie/content/content_thumbs/Images/news/croke_park/CrokePark_general_view2014.jpg",
url: "http://www.gaa.ie/gaa-news-and-videos/daily-news/1/2208141705-press-release-weekend-travel-information/1/"
}
]
и следующий класс статьи:
public class Article
{
public int newsid { get; set; }
public String title { get; set; }
public String content_text_id { get; set; }
public String content_image_id { get; set; }
public DateTime upload_date { get; set; }
public String filename { get; set; }
public String thumbnail { get; set; }
public String url { get; set; }
public String content_video { get; set; }
}
Я пытаюсь десериализовать json для статей следующим образом:
var obj = JsonConvert.DeserializeObject<List<Article>>(json);
Я получаю следующую ошибку:
Невозможно десериализовать текущий объект JSON (например, {"name": "value"}) в тип 'System.Collections.Generic.List'1 [MvcApplication2.Models.Article]', потому что для этого требуется массив JSON (например, [1, 2,3]) для десериализации. Чтобы исправить эту ошибку, либо измените JSON на массив JSON (например, [1,2,3])
У меня также есть проблема с пониманием свойства, называемого @attributes? Хотя для меня это не обязательно, как и свойство разделов.
Есть две проблемы
Массивы в json должны быть определены как
Но ваш json не является определением массива. Это даже не определение объекта. Чтобы сделать это правильное определение массива, вы должны удалить Article:
из своего json.
Вторая проблема - @
персонажей. JSON.NET не работает с ними, поэтому вы должны удалить или заменить эти символы:
json = json.Replace("Article:", "").Replace("@attributes", "attributes");
var articles = JsonConvert.DeserializeObject<List<Article>>(json);
Результат: