저는 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를 시도했지만 그 결과는 완전히 동일합니다. 누군가 내가 뭘 놓치고 있는지 말해 줄 수 있니?
감사합니다. Vinod, 솔루션이 도움이되었습니다. 당신은 생명의 은인입니다. –