Assuming you don't want to modify the underlying enum values (as is shown in the other answers), you can decorate your enum vales with [EnumMember(Value = "Name")] attributes and use the alternate numeric values as the name strings:
[JsonConverter(typeof(StringEnumConverter))] [DataContract] public enum IdleDelayBreakMode { [EnumMember(Value = "100")] Repeat, [EnumMember(Value = "200")] ShowNext }
You will also need to serialize using StringEnumConverter, either by adding [JsonConverter(typeof(StringEnumConverter))] directly to the enum or by applying it globally according to this answer.
This works with [Flags] as well. Serializing both values of the following:
[Flags] [DataContract] [JsonConverter(typeof(StringEnumConverter))] public enum IdleDelayBreakModeFlags { [EnumMember(Value = "100")] Repeat = (1 << 0), [EnumMember(Value = "200")] ShowNext = (1 << 1), }
produces "100, 200".
Adding these attributes will cause DataContractSerializer as well as Json.NET to use these alternate name strings. If you would prefer not to affect the behavior of the data contract serializer, remove [DataContract] but keep the [EnumMember] attributes.
Repeat = 100andShowNext = 200.