このようなJSONオブジェクトがあります。
{
"Errors":{
"err1":[
//* Array of err1 objects
],
"err2":[
//* Array of err2 objects
]
}
}
このオブジェクトを使用して、PHPページへのリクエストで見つかったエラーを報告します。
そのオブジェクトを、基本的に次のように宣言されたvb.Netオブジェクトに変換したいと思います。
Public Class WebErrContainer
Public Errors as List(Of IWebError)
End Class
Public Class Err1
Implements IWebError
End Class
Public Class Err2
Implements IWebError
End Class
Public Interface IWebError
End Interface
私の実装が十分に優れているかどうかはわかりません。vb.netは比較的新しいので、現在OOPのスキルは少し低いです。
それだけです...私は私ができる限り状況を説明したと思います。
あなたがより多くの情報を必要とするならば、私はそれを与えます。
あなたが与えることができるどんな助けにも前もって感謝します。ありがとう。
PD:現在、NewtonsoftのJSON.Netライブラリを使用しています。VB.NETでJSONを処理するために、他のライブラリまたはメソッドをお勧めします。
私はこれを行うことで状況を解決しました:
Public Sub New(ByVal jsonText As String)
Dim jObject As JObject = jObject.Parse(jsonText )
Dim jErrors As JToken = jObject("Errors")
Dim jS = New JsonSerializer()
' This is the "temporal" dictionary that stores the errors like they are
' stored in JSON
Dim jsErrs As New Dictionary(Of String, List(Of Object))
' List that is going to be passed to the "Errors" field in the class
Dim lErrors As New List(Of IWebError)
jsErrs = jS.Deserialize(New JTokenReader(jErrors ), jsErrs .GetType)
If Not jsErrs Is Nothing Then
For Each errType As KeyValuePair(Of String, List(Of Object)) In jsErrs
For Each Err As Object In errType.Value
lErrors .Add(jS.Deserialize(New JTokenReader(Err), Type.GetType(errType.Key)))
Next
Next
End If
Me.Errors = lErrors
End Sub