Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

C# Десериализация / конвертация json в класс

88K
02 января 2015 года
TheDude
3 / / 02.01.2015
Здравствуйте! Помогите пожалуйста.
Есть json строка вида:

Код:
{
    "status": "ok",
    "posts": [
        {
            "id": 3771,
            ...
            "title": "Оригинальные настенные часы своими руками",
            "date": "2014-12-30 11:05:45",
            "categories": [
                {
                    "id": 12,
                    "slug": "%d0%b4%d0%bb%d1%8f-%d0%b4%d0%be%d0%bc%d0%b0",
                    "title": "Для дома",
                    "description": "Для дома. Все для дома своими руками",
                    "parent": 0,
                    "post_count": 10
                },
                {
                    "id": 4,
                    "slug": "%d1%81%d0%b2%d0%be%d0%b8%d0%bc%d0%b8-%d1%80%d1%83%d0%ba%d0%b0%d0%bc%d0%b8",
                    "title": "Своими руками",
                    "description": "Своими руками",
                    "parent": 0,
                    "post_count": 33
                }
            ],
...
Есть классы:

Код:
public class Post
{
    public int id { get; set; }
    ...
    public string title { get; set; }
    public List<Category> categories { get; set; }
}
    public class Category
{
    public int id { get; set; }
    public string slug { get; set; }
    public string title { get; set; }
    public string description { get; set; }
    public int parent { get; set; }
    public int post_count { get; set; }
}
Делаю парсинг:

 
Код:
Post rF = (Post)new JavaScriptSerializer().Deserialize<Post>(responseFromServer);
Все хорошо, НО как мне вытащить все категории данного поста?
Пытался что то типа:

 
Код:
foreach(Category cat in rF.categories)
{
...
}
Но не работает, в rF.categories попадает null.
392
02 января 2015 года
cronya
421 / / 03.01.2009
попробуйте сделать сериализацию для начала, посмотрите что получается, от этого уже пляшите в обратном направлении. А вообще в режиме отладчик проверить все можно :)
88K
02 января 2015 года
TheDude
3 / / 02.01.2015
Цитата: cronya
попробуйте сделать сериализацию для начала, посмотрите что получается, от этого уже пляшите в обратном направлении. А вообще в режиме отладчик проверить все можно :)


Json и так сериализован, приходит в виде "{"status":"ok","count":1,"count_total":56,"pages":56,"posts":[{"id":3771,"type":"post","slug":"%d0%be%d1%80%d0%b8%d0%b3%d0%b8%d0%bd%d0%b0%d0%bb%d1%8c%d0%bd%d1%8b%d0%b5-%d0%bd%d0%b0%d1%81%d1%82%d0%b5%d0%bd%d0%bd%..."
Я просто воспользовался сервисом для удобства читаемости json строки.

392
02 января 2015 года
cronya
421 / / 03.01.2009
я же вроде написал про отладчик, проверьте, почему у вас нули приходят, вероятность того что ваша изначальная структура заполнена нулями вот и следующая реакция.

 
Код:
Post rF = (Post)new JavaScriptSerializer().Deserialize<Post>(responseFromServer);
и это явно не полный парсинг, судить сложно что у вас в responseFromServer храниться.
88K
02 января 2015 года
TheDude
3 / / 02.01.2015
Цитата: cronya
я же вроде написал про отладчик, проверьте, почему у вас нули приходят, вероятность того что ваша изначальная структура заполнена нулями вот и следующая реакция.

 
Код:
Post rF = (Post)new JavaScriptSerializer().Deserialize<Post>(responseFromServer);
и это явно не полный парсинг, судить сложно что у вас в responseFromServer храниться.



Да, извините, приводил не к тому классу.

392
02 января 2015 года
cronya
421 / / 03.01.2009
Код:
[Serializable]
        public class Post
        {
            public int id { get; set; }
            public string title { get; set; }
            public List<Category> categories { get; set; }
        };
        [Serializable]
        public class Category
        {
            public int id { get; set; }
            public string slug { get; set; }
            public string title { get; set; }
            public string description { get; set; }
            public int parent { get; set; }
            public int post_count { get; set; }
        };
  private void Form1_Load(object sender, EventArgs e)
        {
            var RegisteredUsers = new List<Post>();
            RegisteredUsers.Add(new Post() { id = 1, title = "1", categories = new List<Category>() });            
            for (int idx=0; idx<9; idx++)
            {
                var mCat = new Category() { id = idx, slug = idx.ToString(), title = idx.ToString(), description = idx.ToString(),
                    parent = idx, post_count = idx };
                RegisteredUsers[0].categories.Add(mCat);
            }            
            var serializer = new JavaScriptSerializer();
            var serializedResult = serializer.Serialize(RegisteredUsers);
            var deserializedResult = serializer.Deserialize<List<Post>>(serializedResult);
        }
Должно быть как то так
можно возпользоваться такой лабудой для парсинга файлов через Json Json.net
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог