我有一个看起来像这样的 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