Hi,
I'm trying to serialize (and deserialize) an enum to it's member value, not an integer. This technique is mentioned in this microsoft article http://msdn.microsoft.com/en-us/library/aa347875.aspx but it dosen't work.
Does anyone know how to do it?
Here is some sample code
[DataContract]
public class Car
{
[DataMember]
public string model;
[DataMember]
public CarConditionEnum condition;
}
[DataContract(Name = "CarCondition")]
public enum CarConditionEnum
{
[EnumMember]
New,
[EnumMember]
Used,
[EnumMember]
Rental,
Broken,
Stolen
}
class Program
{
public static string SerialiseJSON<E>(E obj)
{
MemoryStream memoryStream = new MemoryStream();
SerialiseJSON<E>(memoryStream, obj);
return Encoding.Default.GetString(memoryStream.ToArray());
}
public static void SerialiseJSON<E>(Stream stream, E obj)
{
DataContractJsonSerializer dataContractJsonSerializer = new DataContractJsonSerializer(typeof(E));
dataContractJsonSerializer.WriteObject(stream, obj);
}
static void Main(string[] args)
{
Car car = new Car();
car.condition = CarConditionEnum.New;
car.model = "Holden";
string JSON = SerialiseJSON<Car>(car);
Console.Write(JSON);
}
} Output is:
{"condition":0,"model":"Holden"}
Expected Output:
{"condition":"New","model":"Holden"}
Thanks,
Auschucky