2016-10-09 2 views
2

Я пытаюсь десериализовать данные с веб-сервера для запуска игры.
API docs предоставил мне данные в формате json, но я изо всех сил старался прочитать данные, которые мне даны, и хранить их как переменную, используемую для входа в плеер. Я также пробовал несколько других вещей, но сейчас я просто застрял.

Обычно ответ от сервера хотел бы так:Deserializing Json VB.NET

{"success":"true","gameserver":"gameserver-alpha.toontownrewritten.com","cookie":"deadbeefdeafbeef0x123"} 

Код для десериализации данных:

Dim result() As TTRServerResponse = JsonConvert.DeserializeObject(Of TTRServerResponse())(responseFromServer) 

класса с переменными, которые я хочу сохранить

Public Class TTRServerResponse 
    Public Property success As String 
    Public Property eta As String 
    Public Property position As String 
    Public Property queueToken As String 
    Public Property cookie As String 
End Class 

Любой идеи, которые я испортил или что мне делать? Спасибо, Бен.

EDIT: Наконец понял это, мне нужно, чтобы изменить свой результат:

Dim result As TTRServerResponse = JsonConvert.DeserializeObject(Of TTRServerResponse) (responseFromServer)

я возвращался данные неправильно на мои другие подразделы, возвращая только result. Мне нужно было вернуть result.success. Теперь у меня есть лучшее понимание.

+0

Вы пробовали настроить свой класс на 'Serializable'? В соответствии с приведенным выше, это отсутствует ... Добавьте это в начало своего класса ' _' ... – Codexer

+1

Вы не описали проблему или задали вопрос – Plutonix

+3

Получаете ли вы несколько объектов json или просто один один? Поскольку в приведенном выше примере образец json-строки не будет десериализован, поскольку это единственный объект, и вы пытаетесь десериализовать его в массив объектов. Структура вашего класса должна соответствовать структуре json _exactly_ – soohoonigan

ответ

1

Вы пытаетесь десериализовать JSON в массив, но в вашем примере это один объект.

Так предполагая

Dim responseFromServer As String 

равно

{"success":"true","gameserver":"gameserver-alpha.toontownrewritten.com","cookie":"deadbeefdeafbeef0x123"} 

Который, согласно документации вы связаны, как предполагают, чтобы быть единственным объектом,

, то вам нужно обновить ваш код для десериализации одного объекта в качестве приложения к массиву

Dim result As TTRServerResponse = JsonConvert.DeserializeObject(Of TTRServerResponse)(responseFromServer)