using Newtonsoft.Json.Linq;
using System.Collections.Generic;
using System.Threading.Tasks;
public static void Main(string[] args)
dynamic j = JsonConvert.DeserializeObject<dynamic>(@"
Console.WriteLine("Before");
var aBefore = j.a.Value.GetType();
Console.WriteLine(aBefore);
var bBefore = j.b[0][0].Value.GetType();
Console.WriteLine(bBefore);
var cBefore = j.b[1].c.Value.GetType();
Console.WriteLine(cBefore);
Console.WriteLine("After");
var aAfter = j.a.Value.GetType();
Console.WriteLine(aAfter);
var bAfter = j.b[0][0].Value.GetType();
Console.WriteLine(bAfter);
var cAfter = j.b[1].c.Value.GetType();
Console.WriteLine(cAfter);
private static void Process(JObject o)
private static void Process(JToken t)
if (int.MinValue <= l && l <= int.MaxValue)