2016-06-23 2 views
-1

asp.net webapi를 개발하고 바이올린을 사용하여 테스트했습니다. 대신이Webapi JSON으로 시작하는 이름 대신 json 응답을 사용하는 방법

{ 
    "name":"A", 
    "age":"B" 
} 

가 다음과 같이 변경할 수 있습니다 아래와 같이 나는 응답을 무엇입니까?

User{ 
    "name":"A", 
    "age":"B" 
} 

하지만 JSON으로 시작하는 응답 대신 사용자 정의 이름을 갖고 싶습니다. 아무도 이것을 달성하는 방법을 도울 수 있습니까?

덕분에

+0

"맞춤 이름"을 무엇이라고합니까? JSON이 아닙니다. – Utkanos

+0

이름을 얻으려면 클래스에서 응답을 래핑해야합니까? –

+2

'{ "User": {...}} "또는 의도적으로 잘못된 JSON을 반환하겠습니까? 예전의 경우, 그렇다면 하나의 속성을 포함하는 "wrapper"또는 "container"클래스를 소개하면됩니다 : public User User {get; 세트; }'. – CodeCaster

답변

2

당신은 "래퍼"또는 "컨테이너"클래스에서 응답을 마무리 할 것으로 보인다. 현재 클래스와 응답을 감안할는 다음과 같다 : 그것을 포장

public class UserContainer 
{ 
    public User User { get; set; } 
} 

그리고 당신의 컨트롤러 :

public UserContainer Get(int id) 
{ 
    var user = _userRepository.Find(id); 
    return new UserContainer 
    { 
     User = user 
    } 
} 

이는 것

public class User 
{ 
    public string Name { get; set; } 
    public int Age { get; set; } 
} 

public User Get(int id) 
{ 
    return _userRepository.Find(id); 
} 

그런 다음 당신은 단순히이 래퍼 클래스를 추가 할 수 있습니다 귀하의 답변은 다음과 같습니다 :

{ 
    "User" : 
    { 
     "Name" : "Foo", 
     "Age" : 42 
    } 
} 

하지만 의미 상 불필요합니다. 클라이언트는 이미 /api/user/42 엔드 포인트를 호출 중이므로 사용자가 다시 돌아올 것으로 예상합니다. JSON에이를 다시 표시 할 필요는 없습니다.

+0

감사합니다. 나는 배열로 사용자를 반환하는 경우 사용할 수 있다고 생각합니다. 이 경우 다른 속성과 별도로이 사용자 이름을 제외하고 camelcase를 제외 할 수 있습니까? –

+0

'[JsonProperty]'를 사용하여 속성의 이름을 바꿀 수 있으며 배열에 대한 래퍼도 필요하지 않습니다. 'IEnumerable '를 돌려 주면됩니다. – CodeCaster

+0

확인. 다시 감사합니다. –