JSON сериализует список объектов со списком C # - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь преобразовать данные JSON из API в список.Это то, что я получаю от API:

{  
   "0":{  
      "Id":0,
      "FNr":"1",
      "Len":"1",
      "Typ":"1",
      "Sort":"1",
      "Low":"1",
      "Up":"1",
      "Rep":"1",
      "UC":"1",
      "Lo":"1",
      "Pf":"1",
      "SelP":"1",
      "Rel":"1",
      "RefLen":"1",
      "Description":"1",
      "Remarks":"1"
   },
   "1":{
      ...
   },
   "2":{
      ...
   }
}

Теперь я пытаюсь десериализовать это до List<DBTableEntryModel>

var entries = JSON.Deserialize<List<DbTableEntryModel>>(jsonString);

Это не из-за чисел.Если я удаляю номера строки JSON, она отлично работает.Есть ли более простой способ исправить эту проблему, не разбивая строку JSON?

Это мой DBTableEntryModel:

public class DbTableEntryModel
    {
        [StringLength(3)]
        [ColumnWidth("30px")]
        public string FNr { get; set; }
        [StringLength(5)]
        [ColumnWidth("60px")]
        public string Len { get; set; }
        [StringLength(3)]
        [ColumnWidth("30px")]
        public string Typ { get; set; }
        [StringLength(3)]
        [ColumnWidth("35px")]
        public string Sort { get; set; }
        [StringLength(10)]
        [ColumnWidth("100px")]
        public string Low { get; set; }
        [StringLength(10)]
        [ColumnWidth("100px")]
        public string Up { get; set; }
        [StringLength(1)]
        [ColumnWidth("30px")]
        public string Rep { get; set; }
        [StringLength(1)]
        [ColumnWidth("25px")]
        public string UC { get; set; }
        [StringLength(1)]
        [ColumnWidth("25px")]
        public string Lo { get; set; }
        [StringLength(1)]
        [ColumnWidth("25px")]
        public string Pf { get; set; }
        [StringLength(2)]
        [ColumnWidth("34px")]
        public string SelP { get; set; }
        [ColumnWidth("90px")]
        public string Rel { get; set; }
        [ColumnWidth("90px")]
        public string RefLen { get; set; }
        [TextArea]
        [Display(Name = "Description", ResourceType = typeof(Resources.Plugin))]
        public string Description { get; set; }
        [TextArea]
        [Display(Name = "Remarks", ResourceType = typeof(Resources.Plugin))]
        public string Remarks { get; set; }
    }

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

если вы все еще хотите использовать список, вы можете попробовать это.

var entries = JSON.Deserialize<Dictionary<string, DbTableEntryModel>>(jsonString).Select(x => x.Value).ToList();
0 голосов
/ 11 декабря 2018

Вместо десериализации вашего json в List<DbTableEntryModel> используйте Dictionary<string, DbTableEntryModel> как

var entries = JSON.Deserialize<Dictionary<string, DbTableEntryModel>>(jsonString);

Тогда вы можете использовать цикл foreach для получения всех ключей и записей из словаря выше, как

foreach (var entry in entries)
{
     var key = entry.Key;                 //"0", "1", "2", ...
     var dbTableEntryModel = entry.Value; // Your `DbTableEntryModel` model
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...