diff --git a/Src/Newtonsoft.Json.Tests/Converters/StringEnumConverterTests.cs b/Src/Newtonsoft.Json.Tests/Converters/StringEnumConverterTests.cs index 3bf060d3..7c00756a 100644 --- a/Src/Newtonsoft.Json.Tests/Converters/StringEnumConverterTests.cs +++ b/Src/Newtonsoft.Json.Tests/Converters/StringEnumConverterTests.cs @@ -104,6 +104,28 @@ namespace Newtonsoft.Json.Tests.Converters public NegativeEnum Value2 { get; set; } } + [JsonConverter(typeof(StringEnumConverter), true)] + public enum CamelCaseEnum + { + This, + Is, + CamelCase + } + + [Test] + public void Serialize_CamelCaseFromAttribute() + { + string json = JsonConvert.SerializeObject(CamelCaseEnum.CamelCase); + Assert.AreEqual(@"""camelCase""", json); + } + + [Test] + public void Deserialize_CamelCaseFromAttribute() + { + CamelCaseEnum e = JsonConvert.DeserializeObject(@"""camelCase"""); + Assert.AreEqual(CamelCaseEnum.CamelCase, e); + } + #if !NET20 [Test] public void NamedEnumDuplicateTest() diff --git a/Src/Newtonsoft.Json/Converters/StringEnumConverter.cs b/Src/Newtonsoft.Json/Converters/StringEnumConverter.cs index 1a44938e..cb97ea96 100644 --- a/Src/Newtonsoft.Json/Converters/StringEnumConverter.cs +++ b/Src/Newtonsoft.Json/Converters/StringEnumConverter.cs @@ -63,6 +63,16 @@ namespace Newtonsoft.Json.Converters AllowIntegerValues = true; } + /// + /// Initializes a new instance of the class. + /// + /// true if the written enum text will be camel case; otherwise, false. + public StringEnumConverter(bool camelCaseText) + : this() + { + CamelCaseText = camelCaseText; + } + /// /// Writes the JSON representation of the object. ///