У меня есть следующий код, который использует 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 происходит неправильно.