2012-02-16 14 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ラップを削除する場合、デバッグモードで私の非直列化は完全に正常に動作します。

私はDataContractJsonSerializerを試しましたが、結果はまったく同じです。誰かが私に何が欠けているか教えてくれますか?

答えて

22

[OK]を、私は自分自身を考え出した。私はこれを変更した場合

BodyStyle = WebMessageBodyStyle.Wrapped 

:問題は、以下の行である

BodyStyle = WebMessageBodyStyle.Bare 

すべてが完璧に動作します!

ありがとうございます!

+0

おかげさまで、あなたのソリューションは私を助けました。あなたは人生の節約者です。 –

関連する問題