2017-07-17 72 views
1

我想创建一个电报机器人是VB.NET,并且在解析JSON时遇到了麻烦。首先,这里是我从电报获得JSON的例子:VB.NET解析JSON - 电报

{ 
     "ok": true, 
     "result": [ 
      { 
       "update_id": 999999999, 
       "message": { 
        "message_id": 99, 
        "from": { 
         "id": 999999999, 
         "first_name": "Adam", 
         "last_name": "Taveirne", 
         "username": "xxxxxxxxxxxxxx", 
         "language_code": "en-US" 
        }, 
        "chat": { 
         "id": 99999999, 
         "first_name": "Adam", 
         "last_name": "Taveirne", 
         "username": "xxxxxxxxxxx", 
         "type": "private" 
        }, 
        "date": 1500281934, 
        "text": "Hello" 
       } 
      } 
     ] 
    } 

我努力找到对其进行解析时采用以下格式此JSON帮助。每当我尝试解析结果数组时,我都会得到一个“无法反序列化当前JSON数组”的错误。

我已经尝试了很多不同的代码,并得到类似的错误,但是这是我最近尝试的样子:

Sub Main() 

//Crap cut out here... 

Dim obj = JsonConvert.DeserializeObject(Of MyTeleJSON)(json) 

End Sub 

Public Class MyTeleJSON 
    Public Property ok As String 
    Public Property result As MyTeleUpdates 
End Class 

Public Class MyTeleUpdates 
    Public Property update_id As String 
    Public Property message_id As String 
    Public Property id As String 
    Public Property first_name As String 
    Public Property last_name As String 
    Public Property username As String 
    Public Property text As String 
    Public Property ok As String 
End Class 

可能有人请点我在正确的方向请我真的努力与这个JSON的东西!

非常感谢

亚当

+0

请注意,你的JSON有一个'message'属性,你的一堆属性应该在里面。如果您在使用可视化类来匹配某些JSON时遇到问题,则可以使用像[jsonutils](https://jsonutils.com/)这样的工具。例如,给定你的JSON,它会生成5个类来正确保存它。 –

+0

我也尝试了5个类,并得到相同的消息...这对我来说没有意义,因为我真的不明白JSON。 –

+0

“无法将当前JSON数组反序列化为类型'x.Module1 + MyTeleUpdates',因为该类型需要JSON对象(例如{”“name”“:”“value”“})才能正确反序列化。 &vbCrLf&“要解决此错误,请将JSON更改为JSON对象(例如{”“name”“:”“value”“})或将反序列化类型更改为实现集合接口的数组或类型ICollection,IList),如列表,可以从JSON数组中反序列化。JsonArrayAttribute也可以添加到类型中,以强制它从JSON数组反序列化。 &vbCrLf&“Path'result',line 1,position 21.” –

回答

0

这应该是需要的类。这可能是因为你的“ok”propery破坏了它的解析,它是一个布尔值。

Public Class From 
    Public Property id As Integer 
    Public Property first_name As String 
    Public Property last_name As String 
    Public Property username As String 
    Public Property language_code As String 
End Class 

Public Class Chat 
    Public Property id As Integer 
    Public Property first_name As String 
    Public Property last_name As String 
    Public Property username As String 
    Public Property type As String 
End Class 

Public Class Message 
    Public Property message_id As Integer 
    Public Property from As From 
    Public Property chat As Chat 
    Public Property date As Integer 
    Public Property text As String 
End Class 

Public Class Result 
    Public Property update_id As Integer 
    Public Property message As Message 
End Class 

Public Class Example 
    Public Property ok As Boolean 
    Public Property result As List(of Result) 
End Class 
+0

谢谢。看起来就是这样! –