【问题标题】:Convert an List<object>to user defined class将 List<object> 转换为用户定义的类
【发布时间】:2019-05-29 01:46:26
【问题描述】:

我有一些数据是对象 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");
                                }
                            }
                        }

【问题讨论】:

  • 这段代码遇到了什么问题? VARIABLE_2 的数据类型是什么?
  • 问题在于它只生成一个 StringBuilder。
  • List是VARIABLE_2的数据类型
  • “对象 IEnumerable 的数据”如何,从哪里来?您发布的是 JSon,Json.Deserialize() 可能是您的最佳选择。
  • 也许你正在寻找这样的东西:foreach(var VARIABLE_3 in (VARIABLE_2 as IEnumerable

标签: c# winforms c#-5.0


【解决方案1】:

使用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);

【讨论】:

  • 这是在 variable_3 List
  • 抛出异常“无法从 System.String 转换或转换为 System.Collections.Generic.List`1[some.Library.Option]。”
  • 不要使用 VARIABLE_3.Tostring() 使用包含整个 json 字符串的字符串变量,正如我在示例中创建的 string jsonArrayObject
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-02
  • 2018-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多