【问题标题】:How to display properties from a deserialized, nested JSON object in your view?如何在视图中显示反序列化的嵌套 JSON 对象的属性?
【发布时间】:2019-06-18 15:19:49
【问题描述】:

我制作了一个模型来接受来自 Jira API 的 JSON 数据。我使用 Newtonsoft.Json 反序列化 JSON 数据并将其保存在名为 jiraObj 的对象中。如果我在return View(jiraObj) 行上设置断点,我可以看到我的对象已成功填充信息。

我不确定如何在我的视图中显示信息。我已经尝试调用控制器类和属性名称,但我似乎只能到达模型中的上层类。

在这里,我使用 Jira API 收集信息。 我调用我的类 Jira 来创建一个对象来保存来自我的模型的预期信息。

            request.AddHeader("Authorization", "Basic " + Base64Encode(accessToken));
            request.AddHeader("Content-Type", "application/json");

            IRestResponse response = client.Execute(request);
            var content = response.Content; // raw content as string

            Jira jiraObj = JsonConvert.DeserializeObject<Jira>(content);

            ViewBag.Title = "Home Page";

            return View(jiraObj);

这是我的模型文件中前几个类的 sn-p。

 public class Jira
    {
        public ICollection<Body> Issues { get; set; }    
    }

    public class Body
    {
        public int Id { get; set; }

        public string Key { get; set; }

        public Fields Fields { get; set; }
    }

    public class Fields
    {
        public Status Status { get; set; }
        public Description Description { get; set; }
        public string Summary { get; set; }
        public Assignee Assignee { get; set; }
        public Creator Creator { get; set; }
        public Reporter Reporter { get; set; }
    }

我的模型非常嵌套,我似乎只能访问public ICollection&lt;Body&gt; Issues { get; set; }

我只使用一个类就可以轻松访问属性。经过几个小时的努力,我似乎​​无法弄清楚。

编辑:查看代码,尝试了以下许多不同的迭代

@model IEnumerable<TestJira.Models.Jira>

@foreach (var item in Model)
{
    <div>
        @item.Summary
    </div>
}

编辑 2:以下代码有效。

@model TestJira.Models.Jira

@Model.Issues.ToList()
@foreach (var Issue in Model.Issues)
{
    <div>@Issue.Fields.Summary</div>
}

【问题讨论】:

  • 请在查看代码中向我们展示您尝试过的内容。
  • 在我的问题中将其添加为编辑。

标签: c# json asp.net-mvc object jira


【解决方案1】:

我会更改视图中的模型声明,使其不是可枚举的,并使用 for 循环。:

@model TestJira.Models.Jira


    @for (var i = 0; i < Model.Issues.Count; i++)
    {
        <div>
            Model.Issues[i].Summary
        </div>
    }

【讨论】:

  • 非常感谢 :) 我将问题 ICollection 更改为列表,因为我无法对其进行索引,并且现在可以使用您的代码 :)
  • 其实我稍微改了一下,把ICollection转换成我认为的列表。我还使用 foreach 循环来最大程度地减少错误。我在问题的末尾添加了代码。再次感谢您为我指明正确的方向
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-08
  • 1970-01-01
相关资源
最近更新 更多