I have a block of code that works in .NET 4.0+, but I need to use this code in an SSIS package that only supports up to .NET 3.5. The problem is I can't use the dynamic object below 4.0. I'm unable to find a workaround, any ideas?
            string json = File.ReadAllText(@"C:json.txt");
            dynamic deserialisedJson = JsonConvert.DeserializeObject(json);
            var locations = new List<Location>();
            foreach (var root in deserialisedJson)
            {
                foreach (var state in root)
                {
                    foreach (var city in state)
                    {
                        foreach (var location in city)
                        {
                            Location loc = new Location();
                            loc.CafeId = location.First["cafeID"];
                            loc.CafeName = location.First["cafeName"];
                            loc.CafeState = location.First["cafeState"];
                            loc.CafeCity = location.First["cafeCity"];
                            loc.CafeStreetName = location.First["cafeStreetName"];
                            loc.CafeZip = location.First["cafeZip"];
                            locations.Add(loc);
                        }
                    }
                }
            }
UPDATE Adding JSON schema
{
"AK": {
    "Anchorage": [{
        "Name": "John Doe",
        "Address": "123 Main St.",
        "City": "Anchorage",
        "State": "AK",
        "Zip": "12345"
    }],
    "Fairbanks": [{
        "Name": "Sally Smith",
        "Address": "987 Main St.",
        "City": "Fairbanks",
        "State": "AK",
        "Zip": "98765"
    }]
}
}
UPDATE 2
I am attempting the IEnumerable workaround, but not sure what the correct syntax is so that I can grab the values I need:
string json = File.ReadAllText(@"C:json.txt");
            var deserialisedJson = (IEnumerable)JsonConvert.DeserializeObject(json);
            var locations = new List<Location>();
            foreach (var root in deserialisedJson)
            {
                foreach (var state in (IEnumerable)root)
                {
                    foreach (var city in (IEnumerable)state)
                    {
                        foreach (var location in (IEnumerable)city)
                        {
                            Location loc = new Location();
                            loc.Name = //What goes here???
                            loc.Address = //What goes here???
                            loc.City = //What goes here???
                            loc.State = //What goes here???
                            loc.Zip = //What goes here???
                            locations.Add(loc);
                        }
                    }
                }
            }
 
     
     
    