Question

At present, the structure of my code uses XmlDocument to load Xml data and then SelectNodes to iterate through a list of repeating items.

For each element, I am using XmlNode.SelectSingleNode to pick out the field elements.

I now want to use JSON.NET to achieve the same results with documents delivered to me as JSON. The answer can be something other than JSON.net, so long as it's C# integrable.

Was it helpful?

Solution

Json.NET has SelectToken. It uses a syntax similar to DataBinder.Eval to get JSON via a string expression:

JObject o = JObject.Parse("{'People':[{'Name':'Jeff'},{'Name':'Joe'}]}");

// get name token of first person and convert to a string
string name = (string)o.SelectToken("People[0].Name");

Or if you wanted to select multiple values:

JObject o = JObject.Parse("{'People':[{'Name':'Jeff','Roles':['Manager', 'Admin']}]}");

// get role array token of first person and convert to a list of strings
IList<string> names = (string)o.SelectToken("People[0].Roles").Select(t => (string)t).ToList();

Documentation: Querying JSON with SelectToken

OTHER TIPS

Do you have an object hierarchy that you can map the the JSON? You could create an object tree (i.e. deserialize the JSON), and use LINQ's Where, SelectMany, etc.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top