2012-09-29 4 views
7

간단한 컨트롤러 동작 IEnumerable<BaseType> Get()을 상상해보십시오. BaseType에서 파생 된 여러 유형의 열거 형을 반환합니다. 당신이 볼 수 있듯이ASP.NET 웹 API의 상속 및 JSON 포맷터

<ArrayOfBaseType> 
    <BaseType i:type="DerivedType1"><A>value</A></BaseType> 
    <BaseType i:type="DerivedType2"><B>value</B></BaseType> 
    <BaseType i:type="DerivedType3"><C>value</C></BaseType> 
</ArrayOfBaseType> 

, 파생 클래스의 유형이 i:type 특성에 전송 : 클라이언트가 XML을 요청하면

는, 결과는이 같은 것입니다. 클라이언트는하지만 JSON을 요청하는 경우

,이 정보가 없습니다 :

[ 
    {"A":"value"}, 
    {"B":"value"}, 
    {"C":"value"} 
] 

방법이 문제를 해결하려면?

+3

@downvoter : 설명이 없으면 명확하지 않은 것을 알지 못해도 질문을 개선 할 수 없으므로 downvote는 아무 가치가 없습니다. –

답변

4

도움이 될 것입니다 :

config.Formatters.JsonFormatter.SerializerSettings.TypeNameHandling = 
    TypeNameHandling.Auto; 

이렇게하면 자동으로 새 속성이 생성됩니다. 필요한 경우.

0

당신은 다음과 같은 클래스 작성하는 경우 : 다음 줄을 추가 할 필요가 WebApiConfig.cs에서

: 어쩌면

public class MyClass 
{ 
    // properties here 

    public string IType 
    { 
     get 
     { 
      return this.GetType().Name; 
     } 

     set { } 
    } 
} 

를, 다음과 같은 변경이 필요하면

+0

아닙니다. 내 눈에는 해킹이야. –

+0

json이 다른 방법으로 존재하는지 잘 모르겠습니다. – Khurshid