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