그래서 저는 Overwatch API를 작업하고 있으며이 JSON의 성과를 표시하는 데 어려움을 겪고 있습니다.
{
totalNumberOfAchievements: 67,
numberOfAchievementsCompleted: 57,
finishedAchievements: "57 / 67",
- achievements: [
{
name: "?",
finished: true,
image: "https://overwatch-a.akamaihd.net/img/icons/0x0E6000000000015D-0e20595aad6b8ccf2de427df797ea1a78ba7dbe412cc54a0e5add73aaaca80bc7d5322859afa7e4da33816fe8ed89ee2c2f0c97c0ae87e5e5f32f29df989e21f.png",
description: "...",
category: "General"
},
{
name: "Centenary",
finished: true,
image: "https://blzgdapipro-a.akamaihd.net/game/achievements/0x0E60000000000156.png",
description: "Win 100 games in Quick or Competitive Play.",
category: "General"
},
목록 계속 ...
이 오류가 발생합니다.
추가 정보 : 유형에> JSON 객체 (예 : { "name": "value"})가 필요하기 때문에 현재 JSON 배열 (예 :> [1,2,3])을 'Overwatch.Models.Achievements'유형으로 역 직렬화 할 수 없습니다. 올바르게 역 직렬화하십시오.
이 개체로 역 직렬화하려고 할 때 :
public class OWAchievements
{
public int totalNumberOfAchievements { get; set; }
public int numberOfAchievementsCompleted { get; set; }
public string finishedAchievements { get; set; }
public Achievements achievements { get; set; }
}
public class Achievements
{
public IEnumerable<Achievements> achievements { get; set; }
public string name { get; set; }
public bool finished { get; set; }
public string image { get; set; }
public string description { get; set; }
public string category { get; set; }
}
내 컨트롤러를 통해 :
[HttpPost]
public ActionResult Index(string profileId)
{
var json = new WebClient().DownloadString($"https://api.lootbox.eu/pc/eu/{profileId}/achievements");
var data = JsonConvert.DeserializeObject<OWAchievements>(json);
ViewBag.Tag = profileId;
return View(data);
}
그리고 마지막으로 내보기에 표시 :
@model IEnumerable<Overwatch.Models.OWAchievements>
@{
ViewBag.Title = "Index";
}
<h2>Enter battle-tag</h2>
<div class="row">
<div class="col-md-12">
@using (Html.BeginForm())
{
@Html.TextBox("profileId", null, new { @class = "form-control" }); <br />
<button class="btn btn-primary" type="submit"> Find Player </button>
}
</div>
</div>
@if (Model != null)
{
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.totalNumberOfAchievements)
</th>
<th>
@Html.DisplayNameFor(model => model.numberOfAchievementsCompleted)
</th>
<th>
@Html.DisplayNameFor(model => model.finishedAchievements)
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.totalNumberOfAchievements)
</td>
<td>
@Html.DisplayFor(modelItem => item.numberOfAchievementsCompleted)
</td>
<td>
@Html.DisplayFor(modelItem => item.finishedAchievements)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
</td>
</tr>
}
</table>
}
else
{
ViewBag.Text = "Nothing";
}
길고 성가신 게시물에 대해 죄송하지만 지금은 한동안 어려움을 겪었으며 누군가가 나를 도울 수 있기를 정말로 바랍니다.
제공된 JSON에 닫기] 및}가 없습니다.
이 문제를 해결 한 후 다음 클래스로 시도했습니다.
public class Rootobject
{
public int totalNumberOfAchievements { get; set; }
public int numberOfAchievementsCompleted { get; set; }
public string finishedAchievements { get; set; }
public Achievement[] achievements { get; set; }
}
public class Achievement
{
public string name { get; set; }
public bool finished { get; set; }
public string image { get; set; }
public string description { get; set; }
public string category { get; set; }
}
RootObject와 Achievment 사이에 계층화하지 마십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다