Как отобразить свойства десериализованного, вложенного объекта JSON в вашем представлении? - PullRequest
0 голосов
/ 18 июня 2019

Я сделал модель для приема данных JSON из Jira API. Я десериализирую данные JSON с помощью Newtonsoft.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 Ответ

1 голос
/ 18 июня 2019

Я бы изменил объявление модели в представлении, чтобы оно не было перечисляемым, и использовал бы цикл for .:

@model TestJira.Models.Jira


    @for (var i = 0; i < Model.Issues.Count; i++)
    {
        <div>
            Model.Issues[i].Summary
        </div>
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...