2016-07-16 60 views
0

那么,我想反序列化JSON到.Net对象。我为它使用了一个类,但它看起来像抛出一个错误。如何使用JSON.NET在VB.NET上将JSON反序列化为“半动态”对象?

Me._konten包含此字符串

{ 
    "status": true, 
    "content": { 
     "status": "up", 
     "ver": "3.0.1", 
     "gen": "a" 
    } 
} 

这里的转换器

Public Async Function JSONify() As Task(Of APIResponseJSON) 
     Dim hasil As Object = Await _ 
      Task.Run(Function() 
         Return JsonConvert.DeserializeObject(Of APIResponseJSON)(Me._Konten) 
        End Function) 
     Return hasil 
    End Function 

因此,内容部分是真正不可预测的,它可能是一个数组或其他对象。 这是我做了类:

Public Class APIResponseJSON 
     Public Property status As Boolean = False 
     Public Property content As Object = New Object 
    End Class 

,然后,当我测试了一下,这表明“身份”中的“内容”都没有找到。 Throwed Exception by UnitTesting

那么如何让content成员真的是动态的?

编辑

内容可能是这样tooo

{ 
    "status": false, 
    "content": { 
     "detail": { 
      "status": "Not Found", 
      "code": 404, 
      "text": "HTTP 404 (GET \/info)", 
      "trace": "" 
     } 
    } 
} 

回答

0

你可能会考虑改变内容对象词典(字符串,字符串)。这里的例子: -

Public Class APIResponseJSON 
    Public Property status As Boolean = False 
    Public Property content As New Dictionary(of String, String) 
End Class 

将内容转换成词典(字符串,字符串),你可以使用内容(“状态”)获得的欲望值。

参考:How can I deserialize JSON to a simple Dictionary<string,string> in ASP.NET?

UPDATE

Public Class APIResponseJSON 
    Public Property status As Boolean = False 
    Public Property content As New Dictionary(of String, String) 
    Public Property exception As New Dictionary(of String, Dictionary(of string, string)) 
End Class 

可以通过使用 “状态” 用的错误消息的数据分开。例如: -

If obj.Status = True Then 
    ' read from content 
Else 
    ' read from exception 
End If 
+0

它完成了这项工作。但有时当我访问其他“404”网址时,响应会发生变化,并会出现错误。 (我更新了这篇文章)。当我创建一个新的测试单元时,它会抛出像这样的异常http://i.imgur.com/gUBV6iX.png – Chris

+0

我建议你分开内容。请参阅上面的更新。希望这可以帮助。 :) –

+0

明白了。谢谢! – Chris