Преобразовать список <object>в определенный пользователем класс - PullRequest
0 голосов
/ 02 января 2019

У меня есть некоторые данные, которые являются объектом IEnumerable, как мне преобразовать его в тип класса, имя класса - опция

    "option": {
  "id": 8204,
  "name": "250 ML",
  "price": 40.0,
  "status": 1,
  "archive": 0
}

   "option": {
  "id": 8204,
  "name": "250 ML",
  "price": 40.0,
  "status": 1,
  "archive": 0
}
class Option
    {
        public long Id { get; set; }
        public string Name { get; set; }
        public long Price { get; set; }
        public long Status { get; set; }
        public long Archive { get; set; }
    }

пока пробовал =>

foreach (var VARIABLE_3 in (IEnumerable) VARIABLE_2)
                        {
                            if ( VARIABLE_3.ToString().Contains("option") && !VARIABLE_3.ToString().Contains("options"))
                            {
                                object[] values = ((IEnumerable)VARIABLE_3).Cast<object>().ToArray();
                                //Option[] values = VARIABLE_3.ToString().Cast<Option>().ToArray();
                                foreach (var VARIABLE in values)
                                {
                                    strStringBuilder.Append("VARIABLE: " + VARIABLE + "\n");
                                }
                            }
                        }

1 Ответ

0 голосов
/ 02 января 2019

Используйте сериализатор JavascriptSerializer или Json.Net для сериализации или десериализации строки Json.

string jsonArrayObject = @"
[
  {     "id": 8204,
        "name": "250 ML",
        "price": 40.0,
        "status": 1,
        "archive": 0
  },
  {
         "id": 8208,
        "name": "Coke",
        "price": 0.0,
        "status": 1,
         "archive": 0
  }
]";

Сериализатор Javascript

List<Option> optionList = new System.Web.Script.Serialization.
                         JavaScriptSerializer().Deserialize<List<Option>>(jsonArrayObject);

Json.Net

List<Option> optionList = JsonConvert.DeserializeObject<List<Option>>(jsonArrayObject);
...