Я пытаюсь создать WCF Json Rest и потреблять то же самое в приложении WPF Phone 8.1 (не silverlight).Ошибка десериализации результата WCF Json с помощью newtonsoft json
Мои WCF является:
<OperationContract()>
<WebGet(UriTemplate:="getdata", ResponseFormat:=WebMessageFormat.Json)>
Function DoWork() As Dictionary(Of Integer, String)
WCF Код:
Public Class BasicService
Implements IBasicService
Public Function DoWork() As Dictionary(Of Integer, String) Implements IBasicService.DoWork
Dim k As New Dictionary(Of Integer, String)
k.Add(1, "One")
k.Add(2, "Two")
Return k
End Function
End Class
Телефон Потребление Код:
Dim httpCli As New System.Net.Http.HttpClient()
Dim httpres As Task(Of HttpResponseMessage) = httpCli.GetAsync("http://localhost:4149/BasicService.svc/getdata")
Dim tk As Task(Of String)
tk = httpres.Result.Content.ReadAsStringAsync
Try
Dim resultstring As String = tk.Result.Substring(tk.Result.IndexOf("{"), tk.Result.LastIndexOf("}") + 1 - tk.Result.IndexOf("{"))
Dim DoWorkResult As Dictionary(Of Integer, String) = Newtonsoft.Json.JsonConvert.DeserializeObject(resultstring)
Catch ex As Exception
End Try
Try
Dim DoWorkResult As Dictionary(Of Integer, String) = Newtonsoft.Json.JsonConvert.DeserializeObject(tk.Result)
Catch ex As Exception
End Try
Скрипач данных для ФОС: RAW:
HTTP/1.1 200 OK Cache-Control: private Content-Type: application/json; кодировка = UTF-8 Сервер: Microsoft-IIS/8.0 X-Сеть САШ-версия: 4.0.30319 X-исходников,:?? = UTF-8 В RTpcUmFnaGF2YVxpbXBcUHJvamVjdHNcTUNvbGxlY3RvclxNQ1dDRlxCYXNpY1NlcnZpY2Uuc3ZjXGdldGRhdGE = X-Powered-By: ASP.NET Дата: Пн, 15 июня 2015 г. 22:50:53 GMT Контент-длина: 49
[{«Ключ»: 1, «Значение»: «Один»}, {«Ключ»: 2, «Значение», : "Два"}]
WebView:
[{ "Ключ": 1, "Значение": "Одна"}, { "Ключ": 2, "Ва LUE ":" Два "}]
При десериализации в коде:
Ошибки при первой попытке поймать с результатом текстом из '{' на '}': Дополнительный текста, встречающиеся после дочитал JSON содержание:,. Путь '', линия 1, позиция 23.
Ошибка при второй попытке поймать с не модифицированной строки JSON:
Невозможно привести объект типа 'Newtonsoft.Json.Linq.JArray' в type 'System.Collections.Generic.Dictionary`2 [System.Int32, System.String]'.
Не могли бы вы исправить меня, где я поступил не так, и какую ошибку я сделал.
Я довольно пустой прямо сейчас, Он кажется слишком большим, но правильным, но ищет простое решение, пытался использовать messageformat как xml и отправлять серию json.net serialized, и в нее вошли специальные charecters для пробелов: (Нужно найти пример, чтобы заменить серийный сериализатор по умолчанию в vb (я всегда получаю для C#). – surpavan
Нашел простой способ, но не грязный, но небольшой способ взлома для моей потребности. Ниже мой ответ. времени и обмена знаниями. – surpavan