【问题标题】:Deserializing Json VB.NET反序列化 Json VB.NET
【发布时间】:2016-10-09 04:46:50
【问题描述】:

我正在尝试反序列化来自游戏启动器的网络服务器的数据。
API docs 为我提供 json 格式的数据,但我一直在努力读取我收到的数据并将其存储为用于登录播放器的变量。我也尝试了其他一些事情,但我现在只是卡住了。

服务器的响应通常是这样的:

{"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。我现在有了更好的理解。

【问题讨论】:

  • 您是否尝试将您的班级设置为Serializable?根据上面的那个,它不见了……把它加到你班级的顶部<Serializable> _……
  • 您没有描述问题或提出问题
  • 您是返回多个 json 对象还是只返回一个?因为在上面的示例中,示例 json 字符串不会反序列化,因为它是单个对象,而您正试图将其反序列化为对象数组。您的类结构必须与 json 结构完全匹配
  • 您的类型 TTRServerResponse 缺少属性 Public Property gameserver As String。尝试将您的 JSON 上传到jsonutils.com,它可以为您自动生成一个 VB.NET 类。

标签: json vb.net json.net


【解决方案1】:

您正在尝试将 JSON 反序列化为一个数组,但在您的示例中它是一个对象。

所以假设

Dim responseFromServer As String

等于

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

根据您链接到的文档,假设是单个对象,

那么你需要更新你的代码来反序列化单个对象作为一个数组

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

【讨论】:

    猜你喜欢
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多