2012-05-16 4 views
2

У меня есть следующий код, который использует RestSharp для вызова веб-службы. Код работает без ошибок, но когда я смотрю на response.Data, я вижу, что объект Result не был десериализован и по-прежнему содержит значения по умолчанию.Deserialization json objects в Restsharp

<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 не десериализует поля, вам придется изменить их на свойства, тогда он должен работать.

Смежные вопросы