Как отобразить ответ JSON в представление MVC без предопределения структуры JSON? - PullRequest
0 голосов
/ 23 апреля 2019

Я довольно новичок в ASP.NET и MVC.Я создал приложение MVC asp.net и ищу способ отображения данных, которые я получаю от любого веб-API, без предварительного определения структуры JSON ответа моего веб-API.

Мой контроллер, который извлекает данные из веб-API, выглядит следующим образом:

[HttpGet]
public async Task<ActionResult> getCall()
{
    string url = "http://localhost:51080/";
    string customerApi = "customer/1";

    using (var client = new HttpClient())
    {
        client.BaseAddress = new Uri(url);
        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

        HttpResponseMessage response = await client.GetAsync(customerApi);
        if (response.IsSuccessStatusCode)
        {
            string jsondata = await response.Content.ReadAsStringAsync();
            return Content(jsondata, "application/json");
        }
        return Json(1, JsonRequestBehavior.AllowGet);
    }
}

My View:

@using MVCApp.Controllers;

@{
ViewBag.Title = "Dashboard";
if (Session["userID"] == null)
{
    Response.Redirect("~/Login/Index");
}
else
{
     ((HomeController)this.ViewContext.Controller).getCall();
}
}

<div class="row">
<div class="col-md-4">
    <h2>Getting started</h2>
    <p>
    <!-- Labels with values here! -->
    </p>
</div>
<div class="col-md-4">
</div>
<div class="col-md-4">
</div>

Надеюсь, что кто-то можетпомогите мне с этим.

Заранее спасибо!

1 Ответ

0 голосов
/ 23 апреля 2019

Вы можете использовать JObject из Json.Net для чтения объекта json без определения класса. Пример:

{
  "key1": "value1",
  "key2": {
    "subkey1": 123
  },
  "key3": [
    3.1415926535,
    3.621,
    13.37
  ]
}
@{
string content = ...; // String containing the json data.
var json = JObject.Parse(content);
}
div class="row">
<div class="col-md-4">
    <h2>Getting started</h2>
    <p>key1: </p>
    <p>@json["key1"].Value<string>()</p><br>
    <!-- Returns "value1" -->
    <p>key2.subkey1: </p>
    <p>@json["key2"]["subkey1"].Value<int>()</p><br>
    <!-- Returns 123 -->
    <p>key3: </p>
    @foreach(var value in json["key3"].Values<double>())
    {
      <p>@value</p>
    }
    <!-- Returns -->
    <!-- 3.1415926535 -->
    <!-- 3.621 -->
    <!-- 13.37 -->
</div>
<div class="col-md-4">
</div>
<div class="col-md-4">
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...