enum 등록 정보를 포함하고 JavaScriptSerializer를 사용하여 객체를 직렬화하는 클래스입니다. JSON을 serialize 할 때 인덱스 값 대신 텍스트가 표시됩니다. 예를 들어 :JavaScriptSerializer가 enum과 함께 작동하지 않을 때 인덱스 값 지정
public enum LocationType
{
[Description("Description 1") ,EnumMember(Value = "EST")]
EST = 1,
[Description("Description 2"), EnumMember(Value = "INTNS")]
INTNS = 2,
[Description("Description 3"), EnumMember(Value = "INTS")]
INTS = 3
}
public class Details
{
public LocationType? LocationType { get; set; }
}
List<Details> obj = new List<Details>();
obj.Add(new Details() { LocationType = LocationType.INTNS });
obj.Add(new Details() { LocationType = LocationType.INTS });
obj.Add(new Details() { LocationType = LocationType.EST });
obj.Add(new Details() { LocationType = LocationType.INTS });
obj.Add(new Details() { LocationType = LocationType.EST });
obj.Add(new Details() { LocationType = LocationType.EST });
obj.Add(new Details() { LocationType = LocationType.INTS });
obj.Add(new Details() { LocationType = LocationType.EST });
return obj;
실제 JSON 결과 :
{ "LocationType ": 2 }
예상 JSON 결과 :
{ "LocationType ": "INTNS" }
Enum에는 LocationType.INTNS.Value를 사용할 수 없습니다. LocationType.INTNS를 사용할 때 INTNS를 반환합니다. – karthik
Json.Net을 사용하면 훨씬 좋습니다. MS 자체조차 JavaScriptSerialzer를 요즘 Json.Net보다 우선 사용 중지했습니다 – Liam
newtonsoft를 사용할 때 예상대로 잘 작동하지만이 경우 javascript serializer에서이 경우 발생해야합니다. – karthik