无法将项目值分配给 C# 中的属性列表

新灵魂

我有我的模型类,如下所示:

        public class Info
        {
            public string status { get; set; }
        }

        public class MyItem
        {
            public MyItem()
            {
                info = new List<Info>();
            }
            public List<Info> info { get; set; }
            public string name { get; set; }
            public string address { get; set; }
            public int? age { get; set; }
        }

        public class Root
        {
            public List<MyItem> data { get; set; }
        }

我正在使用 RestSharp 获取 json 文件,然后将其反序列化为我的模型。然后我想在我的信息列表属性中分配新项目。但我在info列表中没有任何值

{
"data": [
{
   "info": [],
   "name": "John Doe",
   "address": "2541 Cheshire Road",
   "age": null
},
.
.
.

到目前为止,这是我的代码:

            var client = new RestClient("XXX");
            client.UseNewtonsoftJson();
            var request = new RestRequest("XXX");
            var response = client.Execute(request);

            var result = JsonConvert.DeserializeObject<Root>(response.Content);
            var foo = new MyItem();
            foreach (var item in result.data)
            {
                var total = 0;
                total = item.GetType()
                    .GetProperties()
                    .Select(x => x.GetValue(item, null))
                    .Count(v => v is null || (v is string a && 
                     string.IsNullOrWhiteSpace(a)));

                foo.info.Add(new Info() { status = "test" }); // add to list here

            }
            return Ok(result);

我不知道我是否犯了错误,但我认为到目前为止我是对的。我读过一些类似的问题,但我仍然不知道如何解决这个问题。

大卫

您将一个元素添加到 的新实例MyItem,而不是添加到 中的任何实例resultfoo完全摆脱,只需将其添加到以下元素中result

var result = JsonConvert.DeserializeObject<Root>(response.Content);
foreach (var item in result.data)
{
    var total = 0;
    total = item.GetType()
        .GetProperties()
        .Select(x => x.GetValue(item, null))
        .Count(v => v is null || (v is string a && 
         string.IsNullOrWhiteSpace(a)));

    // Add to "item", not to "foo"
    item.info.Add(new Info() { status = "test" });

}
return Ok(result);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章