Peter Daukintis
I’m writing this mainly as a central place to store this code as I need to use it frequently – hopefully it will help others also.
Supposing I have a web service that I want to call that returns me some JSON data. I want to get that from the service and into a class which I will use as a domain model in my application. The first thing to do is to make sure that we understand the hierarchy that the JSON data represents. So for example,
is an object with a boolean property ‘IsSuccess’ which in this case is true. So we can read the {}’s as enclosing an object.
This represents an array of objects; read the []’s as enclosing an array.
Here’s a slightly more complicated example:
{
"FleetsCollection":[
{
"FleetId":2,
"Nickname":"2007 Ninja ZX6R",
"PictureFileName":"jvmlfdaq.rkr2.jpg",
"AverageMpg":43.90925,
"MaxMpg":47.945
},
{
"FleetId":44,
"Nickname":"Luminous Neptune",
"PictureFileName":"ochufm0c.ohm2.png",
"AverageMpg":29.4285,
"MaxMpg":30.341
}
]
}
(Note – useful JSON formatter here http://jsonformatter.curiousconcept.com/)
I can interpret this as an object with a property ‘FleetsCollection’ which is a list of objects which have further properties. In fact, if you take your JSON string data you can convert it to a c# class using this online tool http://json2csharp.com/
For our example, the online tool generates,
{
public int FleetId { get; set; }
public string Nickname { get; set; }
public string PictureFileName { get; set; }
public double AverageMpg { get; set; }
public double MaxMpg { get; set; }
}
public class RootObject
{
public List<FleetsCollection> FleetsCollection { get; set; }
}
Then, we can read the data in using the following code:
RootObject readObject = (RootObject)dataContractJsonSerializer.ReadObject(memoryStream);
1 thought on “wp7–JSON parsing”