2016-08-24 2 views
2

.netからMVCテンプレートを使用していますが、私は自分のjsonを表示できますが、今はHTMLに解析したいので、テーブルで優先的に解析します。jsonを.netでhtmlに解析する方法

私はHomeController.csからjsonを取得します。これはAbout.cshtmlですが、jsonの文字列なので、恐ろしく見えます。

public class HomeController : Controller 
{ 
    public JsonResult TestJson() 
    { 
     var client = new WebClient(); 
     var response = client.DownloadString(new Uri("http://localhost:8080/projecten/api/leerlingen")); 

     var someObject = JsonConvert.DeserializeObject(response); 

     return new JsonResult() { Data = someObject, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; 
    } 

    public ActionResult About() 
    { 
     var client = new WebClient(); 
     var json = client.DownloadString(new Uri("http://localhost:8080/projecten/api/leerlingen")); 
     //parse json 
     ViewBag.Message = json; 
     return View(); 
    } 
} 

これはJSON

[{"inschrijvingsNummer":"0001","naam":"John Smith","email":"[email protected]","evaluatieNummer":"270"}, 
{"inschrijvingsNummer":"0002","naam":"Joe Bloggs","email":"[email protected]","evaluatieNummer":"370"}] 

をそれ、私はあなたが基本的に表すクラスを作成する必要があり

@{ 
ViewBag.Title = "Evaluaties"; 
} 
<h2>@ViewBag.Title.</h2> 
<p>@ViewBag.Message</p> 
+0

@Shyjuは、はるかに良い –

+0

を探していることになる私はそれを行うための答えを投稿しました。 – Shyju

答えて

1

(About.cshtml)このページでそれを示して.NETにHTMLにjson配列内のデータ。

public class FancyPerson 
{ 
    public string InschrijvingsNummer { get; set; } 
    public string Naam { get; set; } 
    public string Email { get; set; } 
    public string EvaluatieNummer { get; set; } 
} 

、あなたのHTTP呼び出しからJSON文字列(項目の配列が含まれ)を取得するときに、このクラスのコレクションにそれをデシリアライズ。

var items = Newtonsoft.Json.JsonConvert.DeserializeObject<IEnumerable<FancyPerson>>(json); 
ViewBag.Message = items; 

は、今すぐあなたのビューで、あなただけのFancyPersonオブジェクトの一覧にこのViewBag項目をキャストする必要があります。アイテムをループして、テーブル行に表示することができます。テーブルとして

@{ 
    var items = (List<FancyPerson>) ViewBag.Message; 
} 
<table> 
@foreach (var item in items) 
{ 
    <tr> 
     <td>@item.Naam</td> 
     <td>@item.Email</td> 
    </tr> 
} 
</table> 
+0

助けてくれてありがとう。どこにFancyPersonクラスを置くのですか?だから私はhttpコールをした後、それを逆シリアル化します。これは正確に何ですか? –

+0

プロジェクトのどこにでも置くことができます。 http呼び出しは基本的に文字列(文字列形式の項目の配列を持つ)を返します。 Desirializeメソッドは、配列内の項目をこのクラスの単一のオブジェクトに変換します。 – Shyju

+0

コードをコピーすると、FancyPersonにビルドエラーが表示されます。 タイプまたは名前空間名 'FancyPerson'が見つかりませんでした。 しかし、FancyPersonと呼ばれるクラスを作成し、それを新しいフォルダに入れると、何が間違っていますか? –

関連する問題