44

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"]]] ] } 
3

6 Answers 6

146
  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

Sign up to request clarification or add additional context in comments.

5 Comments

Yes, I think this really what was asked for at the time. It was kind of a roundabout thing in VS2012 (see here: stackoverflow.com/questions/18526659/…) Now in VS2017, very straightforward.
Extremely useful and when doing a conversion using JsonConvert you may have to create the delegate as an array. In my case this is what I had to do in order to convert the JSON string to a class. JsonConvert.DeserializeObject<PanelFootnotes[]>(FootnoteJSON.Value)
I recently found the need to work with JSON and came across this site json2csharp.com and now I discover that VS does it for you. Good information to have.
This doesn't work with JSON files with size > 5 MB
Thank you for this tip. On a different note, the same applicable for JetBrains Rider as well: Edit > Paste > Paste Special: JSON as Classes / JSON as Records
66

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)

1 Comment

I am not able to build class for that json response
59

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

2 Comments

@Vish: You should have main class e.g; FlightInfo with properties, one property should be the List of Schedule e.g; List<Schedule>. Schedule is the 2nd class which has also some properties. See your json string properly
@Talha:Ya but schedule contains what type of properties because in schedule there are arrays inside array
5

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;

1 Comment

Great, another similar useful online tool, which might help, here it is: minify-beautify.com/json-to-csharp-class-online Thanks
2

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); } 

Comments

1
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; } } 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.