Гость
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / JSON модель??? / 14 сообщений из 14, страница 1 из 1
20.01.2020, 11:33
    #39916260
RegisteredUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON модель???
Коллеги! Нужна помощь.
Не могу понять почему ошибка при десирилизации.
генератор классов типа http://json2csharp.com/ генерит совсем неподходящую модель

Классы
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
    [JsonObject(ItemNullValueHandling = NullValueHandling.Ignore)]
    public class StatusesData
    {
        [JsonProperty("statuses")]
        public Dictionary<string, StatusData> StatusesList { get; set; }
    }
	
	public class StatusData
    {
        [JsonProperty("uuid")]
        public Guid Uuid { get; set; }

        [JsonProperty("code")]
        public string Code { get; set; }

        [JsonProperty("platforms")]
        public List<Dictionary<string, Platform>> PlatformsList{ get; set; }
    }
	
	public class Platform
    {
        [JsonProperty("alias")]
        public string Alias { get; set; }

        [JsonProperty("name")]
        public string Name { get; set; }

        [JsonProperty("description")]
        public string Description { get; set; }
    }




JSON
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
{
  "result": {
    "statuses": {
      "edd3ff21-d8fb-11e7-hhc6-99155dfbfb99": {
        "uuid": "edd3ff21-d8fb-11e7-hhc6-99155dfbfb99",
        "code": "1",
        "platforms": [
          {
            "serv123": {
              "alias": "services22",
              "name": "bla-bla",
              "description": "bla-bla"
            }
          },
          {
            "bobik": {
              "alias": "bob",
              "name": "bla-bla",
              "description": "bla-bla"
            }
          }
        ]
      },
      "edd3ff33-33fb-33e7-33c6-33155dfbfb33": {
        "uuid": "edd3ff33-33fb-33e7-33c6-33155dfbfb33",
        "code": "2",
        "platforms": [
          {
            "s3": {
              "alias": "s3",
              "name": "bla-bla",
              "description": "bla-bla"
            }
          },
          {
            "kik": {
              "alias": "kik",
              "name": "bla-bla",
              "description": "bla-bla"
            }
          }
        ]
      }
    }
  }
}


...
Рейтинг: 0 / 0
20.01.2020, 12:00
    #39916269
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON модель???
RegisteredUser,

Генерация моделей по JSON далеко не самая надёжная штука.
Напишите сами.
...
Рейтинг: 0 / 0
20.01.2020, 12:51
    #39916296
RegisteredUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON модель???
hVostt
RegisteredUser,

Генерация моделей по JSON далеко не самая надёжная штука.
Напишите сами.

так вот и пишу, но где-то ошибка
...
Рейтинг: 0 / 0
20.01.2020, 13:22
    #39916313
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON модель???
RegisteredUser,

А ошибка-то какая?
...
Рейтинг: 0 / 0
20.01.2020, 13:28
    #39916318
RegisteredUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON модель???
hVostt
RegisteredUser,

А ошибка-то какая?


Unexpected character encountered while parsing value.

причем, если закомментировать строку
[JsonProperty("platforms")]
public List<Dictionary<string, Platform>> PlatformsList{ get; set; }

то все работает
...
Рейтинг: 0 / 0
20.01.2020, 14:49
    #39916369
RegisteredUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON модель???
Код: c#
1.
2.
3.
4.
5.
      "edd3ff21-d8fb-11e7-hhc6-99155dfbfb99": {
            "uuid": "edd3ff21-d8fb-11e7-hhc6-99155dfbfb99",
            "code": "1",
            "platforms": [ ] // <<< пустой объект!!!
      }


Проблема локализована.
Слетает потому, что в ответе есть несколько объектов с пустым "platforms": [ ]
Можно как-то игнорить это при десирилизации?
...
Рейтинг: 0 / 0
20.01.2020, 15:16
    #39916383
RegisteredUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON модель???
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
        "platforms": [
          {
            "key01": {
              "alias": "services22",
              "name": "bla-bla",
            }
          },
          {
            "key01": {
              "alias": "services23",
              "name": "",
            }
          },
          {
            "platform02": {
              "alias": "bob",
              "name": "bla-bla",
            }
          }
        ]



Вопрос выродился в другой:
как правильно написать класс, который примет при десирилизации модель, где есть повторяющийся ключ ( "key01" )
Dictionary<string, ClassName> не подходит.
...
Рейтинг: 0 / 0
20.01.2020, 16:33
    #39916419
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON модель???
RegisteredUser
как правильно написать класс, который примет при десирилизации модель, где есть повторяющийся ключ ( "key01" )


Так-то ключ тут не повторяется :)

в коллекции platforms есть объекты, содержащие повторяющийся ключ key01, но в рамках одного объекта ключ не повторяется. поэтому проблемы нет.
...
Рейтинг: 0 / 0
20.01.2020, 16:33
    #39916420
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON модель???
RegisteredUser
Слетает потому, что в ответе есть несколько объектов с пустым "platforms": [ ]
Можно как-то игнорить это при десирилизации?


это не должно быть проблемой
...
Рейтинг: 0 / 0
20.01.2020, 18:10
    #39916489
RegisteredUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON модель???
hVostt
RegisteredUser
как правильно написать класс, который примет при десирилизации модель, где есть повторяющийся ключ ( "key01" )


Так-то ключ тут не повторяется :)

в коллекции platforms есть объекты, содержащие повторяющийся ключ key01, но в рамках одного объекта ключ не повторяется. поэтому проблемы нет.


Как написать классы правильно, чтобы они принимали структуры где ключ НЕ уникальный?
...
Рейтинг: 0 / 0
20.01.2020, 18:22
    #39916494
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON модель???
RegisteredUser
Как написать классы правильно, чтобы они принимали структуры где ключ НЕ уникальный?


Зачем? Если в вашем JSON все ключи уникальны.
...
Рейтинг: 0 / 0
21.01.2020, 12:44
    #39916760
RegisteredUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON модель???
hVostt
RegisteredUser
Как написать классы правильно, чтобы они принимали структуры где ключ НЕ уникальный?


Зачем? Если в вашем JSON все ключи уникальны.


их может не быть вообще, тогда валится ошибка, когда ответ десирилизуется а Dictionary.
...
Рейтинг: 0 / 0
21.01.2020, 12:54
    #39916765
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON модель???
RegisteredUser,

в жёстких сценариях можете попробовать ручную десериализацию:

https://www.newtonsoft.com/json/help/html/DeserializeObject.htm
...
Рейтинг: 0 / 0
24.01.2020, 13:42
    #39918373
RegisteredUser
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON модель???
hVostt,

Спасибо за хинт
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / JSON модель??? / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]