Friday, October 2, 2015

Convert C# Object into JSON and vice versa using Jil

I have also written couple of posts about converting C# object into JSON and vice versa. Following is a list of post for the same.

Converting a C# Object into JSON string
How to convert C# object into JSON string with JSON.NET

In this blog post we will learn about how we can convert C# object into JSON with Jil- Fast .NET JSON (De)Serializer, Built On Sigil an open source library by stack exchange team.

What is Jil:


Jil is a open source (De) Serializer library written by Kevin Montrose and stack exchange team. It is built on Sigil- with a number of crazy optimization tricks.Sigil is also a custom fast validation helper for .NET CIL Generation. Jil is one of fastest Serializer and deserializer library. It is also open source. You can find more information about at following link.

https://github.com/kevin-montrose/Jil

Example:

So let's create example which demonstrate both Serializing and Deserializing object. So first we will create JSON string from C# object via serializing with Jil and then we again deserialize that string to C# object. I'm going to create a console application for this.

jil-jason-converter

After creating a application first thing we have to do is to add Nuget package from JIl via following command.

nuget-package-jil-json-serializer

I'm going to use a Employee class for this example which have four properties Employee Id, First Name, Last Name and Designation.
namespace CsharpJSON
{
    public class Employee
    {
        public int EmployeeId { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Designation { get; set; }
    }
}
Then I have created a function Get Employee function to initialize Employee class with some data.
private static Employee GetEmployee()
{
    var employee = new Employee
    {
        EmployeeId = 1,
        FirstName = "Jalpesh",
        LastName = "Vadgama",
        Designation = "Technial Architect"
    };
    return employee;
}
Now it's time to serialize that employee class into JSON string so I have created  Serialize Employee function.
private static string SerializeEmployee(Employee employee)
{
    using (var output = new StringWriter())
    {
        JSON.Serialize(
           employee,
            output
        );
        return output.ToString();
    }
}
Here you can see I have use JSON.Serialize function which serialize C# object into string writer. Same way I have created Deserialize Employee function to deserialize JSON string created by previous function.
private static Employee DeserializeEmployee(string employeeString)
{
    return JSON.Deserialize<Employee>(employeeString);
}

Here you can see I have used  JSON. Deserialize function to convert JSON string into C# object. Finally I have called this function in my console application Main method and print it with Console.Writeline method.
static void Main(string[] args)
{
    var employee = GetEmployee();
    string employeeSerializedString = SerializeEmployee(employee);

    Console.WriteLine("Serialize Employee");
    Console.WriteLine(employeeSerializedString);

    Console.WriteLine("\n\nDeserializing Employee");
    var employeeDeserialized = DeserializeEmployee(employeeSerializedString);

    Console.WriteLine(employeeDeserialized.EmployeeId);
    Console.WriteLine(employeeDeserialized.FirstName);
    Console.WriteLine(employeeDeserialized.LastName);
    Console.WriteLine(employeeDeserialized.Designation);

    Console.ReadKey();
}

Now when you run application it will generate output like following.

json-csharp-object


You can find complete source code of this application at following location on GitHub- https://github.com/dotnetjalps/CsharpJsonJil

Hope you like it. Stay tuned for more!
Share:

0 comments:

Post a Comment

Your feedback is very important to me. Please provide your feedback via putting comments.

Search This Blog
Loading...
About Me
My Photo

Full Stack Developer,Blogger,Microsoft Mvp, Mentor, Life long learner, 10+ Years of Experience for JavaScript, web and Microsoft technologies. ASP.NET MVC,Web Forms,C#,AngularJs,Golang
Mvp profile
Subscribe to my blog

Enter your email address:

Follow us on facebook
Blog Archive
Total Pageviews