2016-07-16 7 views
0

さて、私はJSONをデシリアライズして.Netオブジェクトにしたいと思っています。クラスを使用していますが、エラーが発生したようです。VB.NETでJSON.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メンバを作るのは本当に動的ですか?

EDIT

は、コンテンツはあなたが(文字列、文字列の)辞書にコンテンツオブジェクトを変更検討するかもしれないこの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" URLにアクセスしたときに、レスポンスが変更され、エラーが発生することがあります。 (私はポストを更新しました)。新しいテストユニットを作成すると、このような例外がスローされます。http://i.imgur.com/gUBV6iX.png – Chris

+0

コンテンツを分割することをお勧めします。上記のアップデートをご覧ください。お役に立てれば。 :) –

+0

入手しました。ありがとう! – Chris

関連する問題