2016-07-16 10 views
0

Nun, ich möchte das JSON in .NET-Objekt deserialisieren. Ich benutze eine Klasse dafür, aber es scheint, als würde ich einen Fehler werfen.Wie kann JSON zu einem "halbdynamischen" Objekt mit JSON.NET auf VB.NET deserialisiert werden?

Me._konten enthält diese Zeichenfolge

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

hier ist der Konverter

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 

so, wird der Inhalt Teil wirklich unberechenbar ist, kann es ein Array oder ein anderes Objekt sein. Diese war die Klasse, die ich gemacht habe:

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

und dann, wenn ich es testen, dies zeigt, dass der „Status“ in dem „Inhalt“ wird nicht gefunden. Throwed Exception by UnitTesting

So, wie die content Mitglied sind wirklich dynamisch?

EDIT

der Inhalt wie dieser tooo

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

Antwort

0

sein kann, Sie könnten Objekt Wörterbuch betrachten Inhalt ändern (von String, String). Hier ist das Beispiel: -

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

Es wird Inhalt in Wörterbuch konvertieren (von String, String) und Sie können Inhalte („Status“) verwenden, um den gewünschten Wert zu bekommen.

Referenz: 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 

Sie können die Daten mit der Fehlermeldung getrennt durch "Status" verwendet wird. Zum Beispiel: -

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

es hat seinen Zweck erfüllt. aber manchmal, wenn ich auf andere "404" url zugegriffen habe, ändert sich die Antwort und es gibt einen Fehler. (Ich habe den Beitrag aktualisiert). Wenn ich eine neue Testeinheit erstelle, gibt es eine Ausnahme wie diese http://i.imgur.com/gUBV6iX.png – Chris

+0

Ich würde vorschlagen, dass Sie Inhalte trennen. Bitte beachten Sie das Update oben. Hoffe das hilft. :) –

+0

Bekam es. Vielen Dank! – Chris

Verwandte Themen