currently i worked on a project that i need to consume the JSon object via the WCF (Windows communication foundation). Since I did not have the control on the data source, it means that i can call the store procedure to load those data into the C# object.
JSON.Net is the solution to deserialzie the json object back to .net object.
http://james.newtonking.com/json
http://json.codeplex.com/
First we will define C# object with Properties matching to the json object.
here is the json sample object from
http://adobe.github.io/Spry/samples/data_region/JSONDataSetSample.html
{ "id": "0001", "type": "donut", "name": "Cake", "ppu": 0.55, "batters": { "batter": [ { "id": "1001", "type": "Regular" }, { "id": "1002", "type": "Chocolate" }, { "id": "1003", "type": "Blueberry" }, { "id": "1004", "type": "Devil's Food" } ] }, "topping": [ { "id": "5001", "type": "None" }, { "id": "5002", "type": "Glazed" }, { "id": "5005", "type": "Sugar" }, { "id": "5007", "type": "Powdered Sugar" }, { "id": "5006", "type": "Chocolate with Sprinkles" }, { "id": "5003", "type": "Chocolate" }, { "id": "5004", "type": "Maple" } ] }
we define the c# object MyJson based on the JSon xml Schema
public class MyJson {
[JsonProperty("id")]
public string id
{
get;
set;
}
[JsonProperty("type")]
public string type
{
get;
set;
}
[JsonProperty("name")]
public string name
{
get;
set;
}
[JsonProperty("Pricing")]
public Pricing Pricing
{
get;
set;
}
[JsonProperty("ppu")]
public string ppu
{
get;
set;
}
[JsonProperty("batters")]
public batters batters
{
get;
set;
}
[JsonProperty("topping")]
public topping[] topping
{
get;
set;
}
}
public class batters
{
[JsonProperty("batter")]
public batter[] batter
{
get;
set;
}
}
public class batter
{
[JsonProperty("id")]
public string id
{
get;
set;
}
[JsonProperty("type")]
public string type
{
get;
set;
}
}
public class topping
{
[JsonProperty("id")]
public string id
{
get;
set;
}
[JsonProperty("type")]
public string type
{
get;
set;
}
}
in my sample i will convert the json object in my page load event
protected void Page_Load(object sender, EventArgs e)
{
using (var webClient = new System.Net.WebClient())
{
try
{
var jsonString = webClient.DownloadString("Your WCF Url with paramter input options");
// if you need to remove any string that did not need in the json xml string.
jsonString = jsonString.Replace("{\"MyJSonOjects\":", "").TrimEnd('}');
//use JsonConvert object in Json.Net to deserialize the json to .net Object.
List<MyJson> MyJsonList= JsonConvert.DeserializeObject<List<MyJson >(jsonString) as List<MyJson>;
}
catch (Exception ex)
{
throw ex;
}
}
}