2012-05-16 20 views
2

我有以下使用RestSharp調用Web服務的代碼。代碼運行時沒有錯誤,但是當我查看response.Data時,我看到Result對象未反序列化,並且仍包含默認值。現在Restharp中的json對象的反序列化

<Serializable()> <DataContract()> _ 
Private Class Result 
    <DataMember(IsRequired:=False)> _ 
    Public responseCode As Long 
    <DataMember(IsRequired:=False)> _ 
    Public responseMessage As String 
    Friend Const RESULT_OK As Long = 2000 
End Class 

Private Function Login(ByVal user As String, ByVal password As String) As RestResponseCookie 
    Dim req As New RestRequest("authenticationService/authentication/signIn", Method.POST) 
    req.RequestFormat = DataFormat.Json 
    Dim input As New SigninInput 
    input.requestParameters.username = user 
    input.requestParameters.password = password 
    req.AddBody(input) 

    Dim response As RestResponse(Of Result) = getRestClient().Execute(Of Result)(req) 
    If response.StatusCode = HttpStatusCode.OK Then 
    Dim res As Result = response.Data 
    End If 
    Return Nothing 
End Function 

,如果我的代碼更改爲以下:

Dim response As RestResponse = getRestClient().Execute(req) 
    If response.StatusCode = HttpStatusCode.OK Then 
    Dim des As New Json.DataContractJsonSerializer(GetType(Result)) 
    Dim res As Result = CType(des.ReadObject(New IO.MemoryStream(response.RawBytes)), Result) 
    End If 

反序列化運行就好了。 我試圖從代碼的非工作版本調試結果,並且內容似乎很好。這是我得到的內容:「{」responseMessage「:」成功:您的請求已成功完成。「,」responseCode「:2000}」,ContentType是「application/json」。

我很好,運行的代碼工作,但我會很高興知道爲什麼通過RestSharp反序列化不正確發生。

回答

1

RestSharp不會反序列化爲字段,您必須將它們更改爲屬性,然後才能正常工作。