Десериализовать JSON Object C # prob

1

У меня есть следующий фрагмент 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? Хотя для меня это не обязательно, как и свойство разделов.

  • 3
    json2csharp.com
  • 0
    jsonlint.com также может пригодиться.
Показать ещё 1 комментарий
Теги:
serialization

1 ответ

2
Лучший ответ

Есть две проблемы

Массивы в json должны быть определены как

Изображение 174551

Но ваш json не является определением массива. Это даже не определение объекта. Чтобы сделать это правильное определение массива, вы должны удалить Article: из своего json.

Вторая проблема - @ персонажей. JSON.NET не работает с ними, поэтому вы должны удалить или заменить эти символы:

json = json.Replace("Article:", "").Replace("@attributes", "attributes");
var articles = JsonConvert.DeserializeObject<List<Article>>(json);

Результат:

Изображение 174551

  • 0
    Также ни один из идентификаторов не в кавычках. Я не уверен, будет ли у этой библиотеки проблема с этим или нет.
  • 0
    @mafafu это не проблема - JSON.NET прекрасно с ним работает. Добавлен скриншот результата
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню