Hello, I am not able to convert dynamic JSON response string into C# class object, it's a long JSON and i even tried to convert JSON into class using the website http://json2csharp.com/ but it's doesn't provide me proper JSON class, Here is my sample JSON
{
TITLE: "Voice (SIP/LD/Local/VoIP/POTS)",
SERVICES: {
33: {
TITLE: "Local T1",
DESCRIPTION: "Local Voice - T1",
QUESTIONS: [{
ID: 18,
TITLE: "How many minutes per month do you need?",
ANSWERS: [{
ID: 31,
TITLE: "Select one",
ISDEFAULTSELECTION: 1
},
{
ID: 32,
TITLE: "Under 10,000",
ISDEFAULTSELECTION: 0
},
{
ID: 33,
TITLE: "10,000 - 50,000",
ISDEFAULTSELECTION: 0
},
{
ID: 34,
TITLE: "50,000 - 100,000",
ISDEFAULTSELECTION: 0
},
{
ID: 35,
TITLE: "More than 100,000",
ISDEFAULTSELECTION: 0
}
],
ISREQUIRED: 1,
TYPE: "select list",
VALIDATIONTYPE: "selected"
}],
INSTALLATIONPHONEREQUIRED: 1
},
},
DEFAULTSERVICEID: 83
},
As in the above example, you can see , ID can be changed so I need dynamic JSON
I have checked this link https://qawithexperts.com/questions/7/how-to-convert-json-string-into-c-class-object
But I need dynamic solution, any help is appreciated, thanks
Using JSON.NET you can
dynamic details= JsonConvert.DeserializeObject("{ 'Name': 'Jaya', 'Address': { 'City': 'New Delhi', 'State': 'Delhi' }, 'Age': 31}");
string name = details.Name; //GET Name
string address = details.Address.City; //Get City
OR using using Newtonsoft.Json.Linq
:
dynamic details= JObject.Parse("{ 'Name': 'Jaya', 'Address': { 'City': 'New Delhi', 'State': 'Delhi' }, 'Age': 31}");
string name = details.Name; //GET Name
string address = details.Address.City; //Get City
OR Using System.Web.Helpers.Json
var dynamicObject = Json.Decode(jsonString);
OR .Net 4.0 has a built-in library
using System.Web.Script.Serialization;
JavaScriptSerializer jss = new JavaScriptSerializer();
var d=jss.Deserialize<dynamic>(str);
OR using Newtonsoft.Json
using Newtonsoft.Json;
var result = JsonConvert.DeserializeObject<T>(json);
You can also use JValue to parse JSON
var jsonString = @"{""Name"":""TestName"",""Company"":""QA With Experts"",
""Entered"":""2018-03-12T00:03:33.245-10:00""}";
dynamic json = JValue.Parse(jsonString);
// values require casting
string name = json.Name;
string company = json.Company;
DateTime entered = json.Entered;
You must have Newtonsoft.Json installed, you can install it using Nuget command
PM> Install-Package Newtonsoft.Json
For Complex JSON string you can take a look a below example
var jsonString = @"[
{
""Id"": ""b3ec4e5c"",
""AlbumName"": ""Dirty Deeds Done Dirt Cheap"",
""Artist"": ""AC/DC"",
""YearReleased"": 1976,
""Entered"": ""2012-03-16T00:13:12.2810521-10:00"",
""AlbumImageUrl"": ""http://ecx.images-amazon.com/images/I/61kTaH-uZBL._AA115_.jpg"",
""AmazonUrl"": ""http://www.amazon.com/gp/product/…ASIN=B00008BXJ4"",
""Songs"": [
{
""AlbumId"": ""b3ec4e5c"",
""SongName"": ""Dirty Deeds Done Dirt Cheap"",
""SongLength"": ""4:11""
},
{
""AlbumId"": ""b3ec4e5c"",
""SongName"": ""Love at First Feel"",
""SongLength"": ""3:10""
},
{
""AlbumId"": ""b3ec4e5c"",
""SongName"": ""Big Balls"",
""SongLength"": ""2:38""
}
]
},
{
""Id"": ""7b919432"",
""AlbumName"": ""End of the Silence"",
""Artist"": ""Henry Rollins Band"",
""YearReleased"": 1992,
""Entered"": ""2012-03-16T00:13:12.2800521-10:00"",
""AlbumImageUrl"": ""http://ecx.images-amazon.com/images/I/51FO3rb1tuL._SL160_AA160_.jpg"",
""AmazonUrl"": ""http://www.amazon.com/End-Silence-Rollins-Band/dp/B0000040OX/ref=sr_1_5?ie=UTF8&qid=1302232195&sr=8-5"",
""Songs"": [
{
""AlbumId"": ""7b919432"",
""SongName"": ""Low Self Opinion"",
""SongLength"": ""5:24""
},
{
""AlbumId"": ""7b919432"",
""SongName"": ""Grip"",
""SongLength"": ""4:51""
}
]
}
]";
JArray jsonVal = JArray.Parse(jsonString) as JArray;
dynamic albums = jsonVal;
foreach (dynamic album in albums)
{
Console.WriteLine(album.AlbumName + " (" + album.YearReleased.ToString() + ")");
foreach (dynamic song in album.Songs)
{
Console.WriteLine("\t" + song.SongName);
}
}
Console.WriteLine(albums[0].AlbumName);
Console.WriteLine(albums[0].Songs[1].SongName);
Install JSON.NET using Nuget Package manager and use the below code to convert JSON into C#
var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<ClassName>(jsonString);
also, if someone stumbles upon this want detailed implementation on
How to read JSON data in C# please read the linked article, which I have written and will provide you working code sample using ASP.NET MVC and Console application.
OR you can also
JSON to C# class online generator for quick coversions.
Subscribe to our weekly Newsletter & Keep getting latest article/questions in your inbox weekly