We can parse a JSON file using JavaScriptSerializer class.
Before reading this article, I would recommend just go through once to my previous article because I am going to use model class and JSON file of the previous article:
Previously I had done the following:
-
Person model class created
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace CreatingJsonFile.Models
{
public class Person
{
public int PersonId
{
get;
set;
}
public string FirstName
{
get;
set;
}
public string LastName
{
get;
set;
}
public string City
{
get;
set;
}
}
}
-
JSON File created
[
{
"PersonId": 1,
"FirstName": "Ravi",
"LastName": "Patel",
"City": "Varanasi"
},
{
"PersonId": 2,
"FirstName": "Ranjeet",
"LastName": "Patel",
"City": "Delhi"
},
{
"PersonId": 3,
"FirstName": "Rajendra",
"LastName": "Patel",
"City": "Varanasi"
},
{
"PersonId": 4,
"FirstName": "Aarav",
"LastName": "Patel",
"City": "Bangalore"
}]
Now in this article we will use JavaScriptSerializer class to deserialize JSON from file.
-
To use JavaScriptSerializer class you must add the reference of System.Web.Extensions.dll into your project.
-
Now right click on Controller folder, go to add, then controller, click on it and select MVC5 Controller -Empty and name ReadJsonController.
Now the JSON Controller looks like the following:
Now modify Index Action method:
using System.Web;
using System.Web.Mvc;
using CreatingJsonFile.Models;
using System.Web.Script.Serialization; // for serialize and deserialize
using System.IO; // for File operation
namespace CreatingJsonFile.Controllers
{
public class ReadJsonController: Controller
{
// GET: ReadJson
public ActionResult Index()
{
//get the Json filepath
string file = Server.MapPath("~/App_Data/output.json");
//deserialize JSON from file
string Json = System.IO.File.ReadAllText(file);
JavaScriptSerializer ser = new JavaScriptSerializer();
var personlist = ser.Deserialize < List < Person >> (Json);
return View(personlist);
}
}
}
-
Now right click on Index() method and click on add view, keep view name as index and select List template. Select Person model class and click on add.
So view is generated and here's the code snippet:
@model IEnumerable
<CreatingJsonFile.Models.Person>
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<p></p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.FirstName)
</th>
<th>
@Html.DisplayNameFor(model => model.LastName)
</th>
<th>
@Html.DisplayNameFor(model => model.City)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.FirstName)
</td>
<td>
@Html.DisplayFor(modelItem => item.LastName)
</td>
<td>
@Html.DisplayFor(modelItem => item.City)
</td>
</tr>
}
</table>
</body>
</html>
-
Now run the application. You will get the following screen,
Point of Interest
In this article we learned how to parse JSON file with C# and desrialization.