public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { if(reader.TokenType == JsonToken.Null) { return null; } var intermediate = new Dictionary<string, string>(); serializer.Populate(reader, intermediate); var language = new Language(); foreach(var kvp in intermediate) { var culture = (CultureInfo)null; try { culture = new CultureInfo(kvp.Key); } catch { culture = CultureInfo.CurrentCulture; } language.Add(culture, kvp.Value); } return language; }