Reputation: 1683
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
Reputation: 3240
To create a class off a json string, copy the string.
In Visual Studio, in the menu at the top, click Edit > Paste special > Paste Json as classes.
Install Newtonsoft.Json via Nuget
Paste the following code into your project, "jsonString" being the variable you wish to deserialize :
Rootobject r = Newtonsoft.Json.JsonConvert.DeserializeObject<Rootobject>(jsonString);
Don't forget to rename Rootobject to be more descriptive eg ILoveTheSmellOfNapalmInTheMorning
-that was a joke
Upvotes: 146
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
Upvotes: 59
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
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
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
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