using System.Collections.Generic;
using Newtonsoft.Json.Linq;
public static void Main()
""rootEntity"": ""function"",
""header"": [""eventNumber"", ""startDate"", ""eventType""],
[""40262-1"", ""Tuesday, December 12, 2017"", ""Corporate""],
[""14361-1"", ""Monday, October 23, 2017"", ""School""],
[""5014-1"", ""Friday, October 13, 2017"", ""Birthday""]
MemoryStream responseStream = new MemoryStream(Encoding.UTF8.GetBytes(json));
var results = GetResultsFromResponseStream(responseStream);
foreach (var item in results)
foreach (var kvp in item)
Console.WriteLine(kvp.Key + ": " + kvp.Value);
static List<Dictionary<string, string>> GetResultsFromResponseStream(Stream responseStream)
using (StreamReader streamReader = new StreamReader(responseStream))
using (JsonReader jsonReader = new JsonTextReader(streamReader))
JObject obj = JObject.Load(jsonReader);
JArray keys = (JArray)obj["header"];
List<Dictionary<string, string>> results = obj["results"]
.Select(a => keys.Zip(a, (k, v) => new { Key = (string)k, Value = (string)v })
.ToDictionary(kvp => kvp.Key, kvp => kvp.Value))