Introduction

JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is language-independent, easy to understand and self-describing. It is used as an alternative to XML. JSON is very popular nowadays.

JSON represents objects in structured text format and data stored in key-value pairs. Many third-party controls like Kendo UI grid supply data from client size to server-side in JSON string format so it is necessary to cast our JSON string to the appropriate object to access data.There are many ways for working with JSON in C# code.

JSON Using Newtonsoft Libraries

Newtonsoft is also known as Json.NET. It is a high-performance JSON framework for .NET. It is very easy to use and much faster than the built-in JSON serializes of .NET.

JSON using JsonConverter

JsonConvert class has a method to convert to and from JSON string, SerializeObject() and DeserializeObject() respectively. It can be used where we won't to convert to and from a JSON string.

In the following example, I have used “JsonConvert.DeserializeObject” method to cast my JSONobject to my custom class object. Here JSON key name must match with the class property name and matching is case insensitive.

C#
static void Main(string[] args)   
{  
    stringjsonData = @ "{  
    'FirstName': 'Jignesh', 'LastName': 'Trivedi'  
}  
";  
var myDetails = JsonConvert.DeserializeObject < MyDetail > (jsonData);  
Console.WriteLine(string.Concat("Hi ", myDetails.FirstName, " " + myDetails.LastName));  
Console.ReadLine();  
}  
public class MyDetail  
{  
    public string FirstName {  
        get;  
        set;  
    }  
    public string LastName {  
        get;  
        set;  
    }  
}

JSON using JObject.Parse

JObject class has parse method; it parses the JSON string and converts it into a Key-value dictionary object. In the following example, I have used “JObject.Parse” method and retrieved data using key.

C#
string jsonData = @"{  
'FirstName':'Jignesh',  
'LastName':'Trivedi'  
}";  
  
var details = JObject.Parse(jsonData);  
Console.WriteLine(string.Concat("Hi ", details["FirstName"], " " + details["LastName"]));  
  
Console.ReadLine();

In the following code snippet, we just assign JObject.Parse method output to dynamic object and access value as properties of dynamic object.

C#
string jsonData = @"{  
'FirstName':'Jignesh',  
'LastName':'Trivedi'  
}";  
dynamic data = JObject.Parse(jsonData);  
  
Console.WriteLine(string.Concat("Hi ", data.FirstName, " " + data.LastName));  
Console.ReadLine();

Note. In the above-described method property name or key name is case sensitive; i.e. property name of class must match key of JSON data.

Using Data Contract Json Serializer class

The .NET framework has also provided classes for serializing and de-serializing to JSON. One of them is DataContractJsonSerializer. Using the following code we can deserialize the JSON object. To use this method the following points must be remembered,

C#
static void Main(string[] args)  
{  
    string jsonData = "{ \"FirstName\":\"Jignesh\",\"LastName\":\"Trivedi\" }";  
    DataContractJsonSerializerjsonSerializer = newDataContractJsonSerializer(typeof(MyDetail));  
    MemoryStream stream = newMemoryStream(Encoding.UTF8.GetBytes(jsonData));  
    stream.Position = 0;  
    MyDetaildataContractDetail = (MyDetail) jsonSerializer.ReadObject(stream);  
    Console.WriteLine(string.Concat("Hi ", dataContractDetail.FirstName, " " + dataContractDetail.LastName));  
    Console.ReadLine();  
}  
[DataContract]  
public class MyDetail  
{  
    [DataMember]  
    public string FirstName {  
        get;  
        set;  
    }  
    [DataMember]  
    public string LastName {  
        get;  
        set;  
    }  
}

Output

output

Summary

Using the above-described method we can parse JSON in C# code and extract value from this object.

Read more articles on JSON.