2016-10-09 165 views
2

我想反序列化遊戲啓動器的Web服務器的數據。
API docs爲我提供了json格式的數據,但我一直在努力能夠讀取我給出的數據並將其存儲爲變量以便用於登錄播放器。我也嘗試了一些其他的東西,但我現在只是卡住了。

通常來自服務器的響應想是這樣的:反序列化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 

任何變量想法,我搞砸了,還是應該做什麼?謝謝,本。

編輯:終於想通了,我需要改變我的結果:

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)