Vishwajeet
Vishwajeet

Reputation: 1683

How to convert JSON text into objects using C#

How can I convert the following JSON response to a C# object?

{ 
    "err_code": "0", 
    "org": "CGK", 
    "des": "SIN", 
    "flight_date": "20120719",
    "schedule": [
        ["W2-888","20120719","20120719","1200","1600","03h00m","737-200","0",[["K","9"],["F","9"],["L","9"],["M","9"],["N","9"],["P","9"],["C","9"],["O","9"]]],
        ["W2-999","20120719","20120719","1800","2000","01h00m","MD-83","0",[["K","9"],["L","9"],["M","9"],["N","9"]]]
    ]
}

Upvotes: 43

Views: 209229

Answers (6)

Ole EH Dufour
Ole EH Dufour

Reputation: 3240

  1. To create a class off a json string, copy the string.

  2. In Visual Studio, in the menu at the top, click Edit > Paste special > Paste Json as classes.

  3. Install Newtonsoft.Json via Nuget

  4. Paste the following code into your project, "jsonString" being the variable you wish to deserialize :

    Rootobject r = Newtonsoft.Json.JsonConvert.DeserializeObject<Rootobject>(jsonString);

  5. Don't forget to rename Rootobject to be more descriptive eg ILoveTheSmellOfNapalmInTheMorning-that was a joke

Upvotes: 146

Talha
Talha

Reputation: 19262

I recommend you to use JSON.NET. it is an open source library to serialize and deserialize your c# objects into json and Json objects into .net objects.

Here's some stuff from their website:

Deserialization Example:

string json = @"{
  'Name': 'Bad Boys',
  'ReleaseDate': '1995-4-7T00:00:00',
  'Genres': [
    'Action',
    'Comedy'
  ]
}";

Movie m = JsonConvert.DeserializeObject<Movie>(json);

string name = m.Name;
// Bad Boys

Performance Comparison To Other JSON serializiation Techniques enter image description here

Upvotes: 59

Islam
Islam

Reputation: 137

copy your Json and paste at textbox on http://json2csharp.com/ and click on Generate button,

A cs class will be generated use that cs file as below:

var generatedcsResponce = JsonConvert.DeserializeObject<RootObject>(yourJson);

where RootObject is the name of the generated cs file;

Upvotes: 5

Samarth Jaiswal
Samarth Jaiswal

Reputation: 34

class Program
{
    static void Main(string[] args)
    {
        var res = Json; //Json that has to be converted

        Response resp = new Response();
        resp = JsonSerializer.Deserialize<Response>(res);

        Console.WriteLine(res);
    }
}

public class Response
{
    public bool isValidUser { get; set; }
    public string message { get; set; }
    public int resultKey { get; set; }
}

Upvotes: 1

Shyju
Shyju

Reputation: 218732

First create a class to represent your json data.

public class MyFlightDto
{
    public string err_code { get; set; }
    public string org { get; set; } 
    public string flight_date { get; set; }
    // Fill the missing properties for your data
}

Using Newtonsoft JSON serializer to Deserialize a json string to it's corresponding class object.

var jsonInput = "{ org:'myOrg',des:'hello'}"; 
MyFlightDto flight = Newtonsoft.Json.JsonConvert.DeserializeObject<MyFlightDto>(jsonInput);

Or Use JavaScriptSerializer to convert it to a class(not recommended as the newtonsoft json serializer seems to perform better).

string jsonInput="have your valid json input here"; //
JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
Customer objCustomer  = jsonSerializer.Deserialize<Customer >(jsonInput)

Assuming you want to convert it to a Customer classe's instance. Your class should looks similar to the JSON structure (Properties)

Upvotes: 66

ff0000e2
ff0000e2

Reputation: 437

This will take a json string and turn it into any class you specify

public static T ConvertJsonToClass<T>(this string json)
    {
        System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
        return serializer.Deserialize<T>(json);
    }

Upvotes: 2

Related Questions