using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Runtime.Serialization;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
""dateFormat"": ""string"",
""commsDirectionCode"": ""string"",
""commsDeliveryChannelCDCHN"": ""string"",
""commsDeliveryStateCode"": ""string"",
""commsDeliveryDttm"": ""2017-02-14T02:20:52.836Z"",
""commsSuccessFlag"": true,
""commsCode"": ""string"",
""commsName"": ""string"",
""customerGrainCUSGN"": 0,
""productItemCode"": ""string"",
""sourceCommsRefn"": ""string"",
""campaignDttm"": ""2017-02-14T02:20:52.836Z"",
""campaignCode"": ""string"",
""campaignName"": ""string"",
""contentValidStartDttm"": ""2017-02-14T02:20:52.836Z"",
""contentValidEndDttm"": ""2017-02-14T02:20:52.836Z"",
""trackingCode"": ""string"",
""headlineDisplayText"": ""string"",
""contentDisplayText"": ""string"",
""topicIconClass"": ""string"",
""contentTemplateId"": 0,
""contentTemplateVersNumb"": 0,
""archiveDate"": ""2017-02-14T02:20:52.836Z"",
""paramText"": ""string"",
""paramValue"": ""string""
""contentTemplateParameters"": [
""paramText"": ""string"",
""paramValue"": ""string""
""displayText"": ""string1"",
""displayText"": ""string2"",
""commsDirectionCode"": ""string"",
""commsDeliveryChannelCDCHN"": ""string"",
""commsDeliveryStateCode"": ""string"",
""commsDeliveryDttm"": ""2017-02-14T02:20:52.836Z"",
""commsSuccessFlag"": true,
""commsCode"": ""string"",
""commsName"": ""string"",
""customerGrainCUSGN"": 0,
""productItemCode"": ""string"",
""sourceCommsRefn"": ""string"",
""campaignDttm"": ""2017-02-14T02:20:52.836Z"",
""campaignCode"": ""string"",
""campaignName"": ""string"",
""contentValidStartDttm"": ""2017-02-14T02:20:52.836Z"",
""contentValidEndDttm"": ""2017-02-14T02:20:52.836Z"",
""trackingCode"": ""string"",
""headlineDisplayText"": ""string"",
""contentDisplayText"": ""string"",
""topicIconClass"": ""string"",
""contentTemplateId"": 0,
""contentTemplateVersNumb"": 0,
""archiveDate"": ""2017-02-14T02:20:52.836Z"",
""paramText"": ""string"",
""paramValue"": ""string""
""contentTemplateParameters"": [
""paramText"": ""string"",
""paramValue"": ""string""
""displayText"": ""string3"",
""displayText"": ""string4"",
""dateFormat"": ""string"",
""commsDirectionCode"": ""string"",
""commsDeliveryChannelCDCHN"": ""string"",
""commsDeliveryStateCode"": ""string"",
""commsDeliveryDttm"": ""2017-02-14T02:20:52.836Z"",
""commsSuccessFlag"": true,
""commsCode"": ""string"",
""commsName"": ""string"",
""customerGrainCUSGN"": 0,
""productItemCode"": ""string"",
""sourceCommsRefn"": ""string"",
""campaignDttm"": ""2017-02-14T02:20:52.836Z"",
""campaignCode"": ""string"",
""campaignName"": ""string"",
""contentValidStartDttm"": ""2017-02-14T02:20:52.836Z"",
""contentValidEndDttm"": ""2017-02-14T02:20:52.836Z"",
""trackingCode"": ""string"",
""headlineDisplayText"": ""string"",
""contentDisplayText"": ""string"",
""topicIconClass"": ""string"",
""contentTemplateId"": 0,
""contentTemplateVersNumb"": 0,
""archiveDate"": ""2017-02-14T02:20:52.836Z"",
""paramText"": ""string"",
""paramValue"": ""string""
""contentTemplateParameters"": [
""paramText"": ""string"",
""paramValue"": ""string""
""displayText"": ""string5"",
""displayText"": ""string6"",
""commsDirectionCode"": ""string"",
""commsDeliveryChannelCDCHN"": ""string"",
""commsDeliveryStateCode"": ""string"",
""commsDeliveryDttm"": ""2017-02-14T02:20:52.836Z"",
""commsSuccessFlag"": true,
""commsCode"": ""string"",
""commsName"": ""string"",
""customerGrainCUSGN"": 0,
""productItemCode"": ""string"",
""sourceCommsRefn"": ""string"",
""campaignDttm"": ""2017-02-14T02:20:52.836Z"",
""campaignCode"": ""string"",
""campaignName"": ""string"",
""contentValidStartDttm"": ""2017-02-14T02:20:52.836Z"",
""contentValidEndDttm"": ""2017-02-14T02:20:52.836Z"",
""trackingCode"": ""string"",
""headlineDisplayText"": ""string"",
""contentDisplayText"": ""string"",
""topicIconClass"": ""string"",
""contentTemplateId"": 0,
""contentTemplateVersNumb"": 0,
""archiveDate"": ""2017-02-14T02:20:52.836Z"",
""paramText"": ""string"",
""paramValue"": ""string""
""contentTemplateParameters"": [
""paramText"": ""string"",
""paramValue"": ""string""
""displayText"": ""string7"",
""displayText"": ""string8"",
public static void Test()
TestSelectTokens(content);
TestDescendantsAndSelf(content);
TestOriginalCode(content);
Console.WriteLine("done");
private static void TestOriginalCode(string content)
Console.WriteLine("Testing original code...");
var decendant = "callToAction";
var resultObjects = AllChildren(JObject.Parse(content))
.First(c => c.Type == JTokenType.Array && c.Path.Contains(decendant))
JArray responseList = new JArray();
foreach (JObject result in resultObjects)
responseList.Add(result);
Console.WriteLine("Result of query: ");
Console.WriteLine(responseList);
private static IEnumerable<JToken> AllChildren(JToken decendant)
foreach (var c in decendant.Children())
foreach (var cc in AllChildren(c))
private static void TestDescendantsAndSelf(string content)
Console.WriteLine("Testing JContainer.DescendantsAndSelf()...");
var root = (JContainer)JToken.Parse(content);
var descendant = "callToAction";
.Where(p => p.Name == descendant)
var responseList = new JArray(query);
Console.WriteLine("Result of query: ");
Console.WriteLine(responseList);
var responseList2 = new JArray(query.SelectMany(a => a));
Console.WriteLine("Result of query, flattened to a single array: ");
Console.WriteLine(responseList2);
static void TestSelectTokens(string content)
Console.WriteLine("Testing JToken.SelectTokens() ...");
var root = JToken.Parse(content);
var descendant = "callToAction";
.SelectTokens(string.Format("..{0}", descendant))
var responseList = new JArray(query);
Console.WriteLine("Result of query: ");
Console.WriteLine(responseList);
var responseList2 = new JArray(query.SelectMany(a => a));
Console.WriteLine("Result of query, flattened to a single array: ");
Console.WriteLine(responseList2);
public static void Main()
Console.WriteLine("Json.NET version: " + typeof(JsonSerializer).Assembly.FullName);