Проблемы с отображением десериализованного Json в Gridview - PullRequest
0 голосов
/ 02 октября 2019

Это моя первая публикация здесь, и я попытался выполнить поиск, но я не могу заставить ни одно из предложенных решений работать на меня.

Я пытаюсь получить ответ Json от вызова API и отобразить его в виде веб-сетки. В настоящее время моя сетка отображает только первую часть JSON. Смотрите картинку. Я не уверен, что это потому, что мое мнение неверно или это связано с моей десериализацией.

Новый ответ

Я хочу, чтобы он отображал каждую оценку относитель в ответе json ниже:

[ { "success": true, "rate_response": [ { "scac": "DAFG", «service»: «dayton_ltl», «service_human»: «Dayton Freight», «carrier»: «dayton», «carrier_human»: «Dayton», «оценочный_transit_days»: 1, "стоимость": "$ 145,53" }, { "услуга": "FEDEX_EXPRESS_SAVER", "service_human": "FedEx Express Saver", "оператор": "fedex", "carrier_human": "Федеральная посылка", "оценочный_транзит_дней": 3, "стоимость": "$ 179,78" }, ], "rate_response_errors ": [ { " перевозчик ":" BCP Transportation ", " message ":" Пробег не обнаружен " } ], " pick_ticket_number ":" 99999", " bol_number ":" 4861521889418148 " } ]`

Текущий контроллер

var result = JsonConvert.DeserializeObject<List<RootObject>>(jsonString);
return View("GridView", result);

ShipRкласс ответа:

public class RateResponse
{

    [JsonProperty("scac")]
    public string scac { get; set; }

    [JsonProperty("service")]
    public string service { get; set; }

    [JsonProperty("service_human")]
    public string service_human { get; set; }

    [JsonProperty("carrier")]
    public string carrier { get; set; }

    [JsonProperty("carrier_human")]
    public string carrier_human { get; set; }

    [JsonProperty("estimated_transit_days")]
    public int estimated_transit_days { get; set; }

    [JsonProperty("cost")]
    public string cost { get; set; }
}

public class RateResponseError
{

    [JsonProperty("carrier")]
    public string carrier { get; set; }

    [JsonProperty("message")]
    public string message { get; set; }
}

public class RootObject
{

    [JsonProperty("success")]
    public bool success { get; set; }

    [JsonProperty("rate_response")]
    public IList<RateResponse> rate_response { get; set; }

    [JsonProperty("rate_response_errors")]
    public IList<RateResponseError> rate_response_errors { get; set; }

    [JsonProperty("pick_ticket_number")]
    public string pick_ticket_number { get; set; }
}


}

GridView.cshtml:

@model List<P21.Rules.Visual.Areas.SwanleapQuote.Models.RootObject>
     @{
       ViewBag.Title = "GridView";
       Layout = "~/Views/Shared/_VisualRuleLayout.cshtml";
}
<div>

   <hr />
</div>

 @foreach (var item in Model)
{ 
<div class="form-horizontal">
    <form>
        <h3>Rates</h3>
        @{
            var grid = new WebGrid(Model, canPage: true, canSort: true, rowsPerPage: 2);
            grid.Pager(WebGridPagerModes.NextPrevious);

         }

        <div>
            @grid.GetHtml(htmlAttributes: new
 {
   id = "grid",
   @class = "table table-bordered table-striped table-condensed"
 },
        emptyRowCellValue: "No Records Found",
        headerStyle: "grid-header")
        </div>

        <button class="btn btn-warning pull-right" type="submit">Return   <i class="glyphicon glyphicon-arrow-right"></i></button>
    </form>

    </div>

Мой текущий результат показывает только:

Success, rate_response, rate_response_errors, pick_ticket_number

Я бы хотел показать мне:

service_human, приблизительно_транзит_дней, стоимость

1 Ответ

0 голосов
/ 03 октября 2019

Пожалуйста, проверьте ниже код:

public class RateResponse
{
    public string scac { get; set; }
    public string service { get; set; }
    public string service_human { get; set; }
    public string carrier { get; set; }
    public string carrier_human { get; set; }
    public int estimated_transit_days { get; set; }
    public string cost { get; set; }
}

public class RateResponseError
{
    public string carrier { get; set; }
    public string message { get; set; }
}

public class RootObject
{
    public bool success { get; set; }
    public List<RateResponse> rate_response { get; set; }
    public List<RateResponseError> rate_response_errors { get; set; }
    public string pick_ticket_number { get; set; }
    public string bol_number { get; set; }
}

Десериализовать объект:

var x = JsonConvert.DeserializeObject<RootObject>(jsonString);

JsonString:

[{
"success": true,
"rate_response": [
{
"scac": "DAFG",
"service": "dayton_ltl",
"service_human": "Dayton Freight",
"carrier": "dayton",
"carrier_human": "Dayton",
"estimated_transit_days": 1,
"cost": "$145.53"
},
{
"service": "FEDEX_EXPRESS_SAVER",
"service_human": "FedEx Express Saver",
"carrier": "fedex",
"carrier_human": "Fedex Parcel",
"estimated_transit_days": 3,
"cost": "$179.78"
}],
"rate_response_errors": [
{
"carrier": "BCP Transportation",
"message": "No Mileage Detected"
}
],
"pick_ticket_number": "99999",
"bol_number": "4861521889418148"
}
]

.CSHTML страница

You can use foreach loop for create table as per your requirement
...