public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { if (reader.TokenType != JsonToken.String) { throw new JsonSerializationException(string.Format("Cannot convert non-string value to {0}.", objectType)); } var enumValue = GoogleMappingHelper.StringToEnum(reader.Value, objectType); return(Enum.Parse(objectType, enumValue)); }
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { // We don't know the real types at compile time, so we'll have to use this lame thing. var dictionary = (IDictionary)value; var mappedDictionary = dictionary .Keys .OfType <object>() .Select(k => new KeyValuePair <string, object>(GoogleMappingHelper.EnumToString(k), dictionary[k])) .ToDictionary(kvp => kvp.Key, kvp => kvp.Value); serializer.Serialize(writer, mappedDictionary); }
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { writer.WriteValue(GoogleMappingHelper.EnumToString(value)); }