using System.Collections.Generic;
using Newtonsoft.Json.Linq;
public static void Main()
""ItemA"": ""Basic string""
""ItemB"": ""Another basic string""
Dictionary<string, string> optionalDataSet1 = Deserialize(json);
foreach (var kvp in optionalDataSet1)
Console.WriteLine(kvp.Key + ": " + kvp.Value);
public static Dictionary<string, string> Deserialize(string json)
return JObject.Parse(json)
.SelectToken("CustomData[0].Wrapper[0].OptionalDataSet1")
.SelectMany(jo => jo.Properties())
.ToDictionary(jp => jp.Name, jp => (string)jp.Value);