2012-02-16 2 views
9

저는 RESTful WCF 서비스에 상당히 익숙해 져서 저와 함께합니다. json 응답으로 학생 목록을 반환하는 간단한 RESTful WCF 서비스를 작성하려고합니다. 모든 것은 json 문자열을 클라이언트의 Student 객체 목록으로 다시 변환하려고하는 지점까지 잘 작동합니다. 여기 메소드 이름이있는 RESTful WCF wrapping json 응답

내 작업 계약입니다 :

[OperationContract] 
[WebGet(UriTemplate = "Students/", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)] 
public List<Student> FetchStudents() 
{ 
//Fetch and return students list 
} 

클라이언트 코드 :

static void Main(string[] args) 
{ 
HttpClient client = new HttpClient("http://localhost/StudentManagementService/StudentManagement.svc/"); 
response = client.Get("Students/"); 
response.EnsureStatusIsSuccessful(); 
JavaScriptSerializer json_serializer = new JavaScriptSerializer(); 
string str = response.Content.ReadAsString(); 
List<Student> st = json_serializer.Deserialize<List<Student>>(str); 
} 

서비스에 의해 반환 된 JSON 문자열은 아래와 같이 보이기 때문에이 코드는 분명히 실패

{"FetchStudentsResult":[{"Course":"BE","Department":"IS","EmailID":"[email protected]","ID":1,"Name":"Vinod"}]} 

어떤 이유로 json 응답이 FetchStudentsResult 내부에 래핑됩니다. 이제 디버그 모드에서 강제로이 FetchStudentsResult 랩을 제거하면 내 deserialization이 완벽하게 작동합니다.

DataContractJsonSerializer를 시도했지만 그 결과는 완전히 동일합니다. 누군가 내가 뭘 놓치고 있는지 말해 줄 수 있니?

답변

22

좋아, 나 자신을 알아 냈어.

BodyStyle = WebMessageBodyStyle.Wrapped 

내가이 변경 :

BodyStyle = WebMessageBodyStyle.Bare 

모든 것이 완벽하게 작동 문제는 아래의 라인입니다!

감사합니다.

+0

감사합니다. Vinod, 솔루션이 도움이되었습니다. 당신은 생명의 은인입니다. –