Как десериализовать массив JSON в Csharp - PullRequest
0 голосов
/ 21 января 2020

Ниже приведена Json полезная нагрузка, которую я получаю из API:

[
  {
    "id": "8c0e33ea-51af-44e0-8cb5-ef93703a4e6c",
    "storeId": "xyz",
    "name": "009DI",
    "styleColors": []
  },
  {
    "id": "f6284195-0f58-4f6b-a3b8-d5d22d1f7e63",
    "storeId": "abc",
    "name": "A001A",
    "styleColors": []
  }
]

Классы, созданные для десериализации:

    public class BINobjects
    {
        [JsonProperty(PropertyName = "binid")]
        public string binid { get; set; }

        [JsonProperty(PropertyName = "storeId")]
        public string storeId { get; set; }

        [JsonProperty(PropertyName = "binname")]
        public string binname { get; set; }       
    }
    public class BINdetails
    {
        [JsonProperty(PropertyName = "BINobjects")]
        //public pages pages { get; set; }
        public IList<BINobjects> BINobjects { get; set; }        
    }

Ниже показано, как я пытаюсь десериализовать его как список объектов BINdetails

BINobjects BINdetails = JsonConvert.DeserializeObject<List<BINobjects>>(result);

Ошибка: невозможно неявное преобразование 'system.collections.generi c .list в "tools.binobjects'. Однако приведенный ниже код работает, но читает только 1 столбец из источника . var str = JsonConvert.DeserializeObject<List<BINobjects>>(result); Есть ли способ читать непосредственно в объект, чем в переменную. Я в порядке с тем, что работает.

1 Ответ

0 голосов
/ 21 января 2020

Я исправил это, отредактировав имена свойств класса:

public class BINobjects
    {
        [JsonProperty(PropertyName = "id")]
        public string binid { get; set; }

        [JsonProperty(PropertyName = "storeId")]
        public string storeId { get; set; }

        [JsonProperty(PropertyName = "name")]
        public string binname { get; set; }

    }

И затем прочитав переменную:

var str = JsonConvert.DeserializeObject<List<BINobjects>>(result);
...