如何在视图中显示来自反序列化的嵌套JSON对象的属性?

时间:2019-06-18 15:19:49

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

我创建了一个用于从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);

这是我的模型文件中前几个类的摘要。

 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<Body> 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>
}

1 个答案:

答案 0 :(得分:1)

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

@model TestJira.Models.Jira


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