私は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を試しましたが、結果はまったく同じです。誰かが私に何が欠けているか教えてくれますか?
おかげさまで、あなたのソリューションは私を助けました。あなたは人生の節約者です。 –