我试图实现的是将XML转换为JSON对象。目前我是这样做的:
Public Class Person
Public Property Name As String
' other properties here'
End Class
Dim doc As XmlDocument
doc.LoadXml(arg_strXml)
Dim jsonValue As String = JsonConvert.SerializeXmlNode(doc)
Dim jsonObject = JsonConvert.DeserializeObject(Of Person)(jsonValue)
Dim firstName As String = jsonObject.Name
但是,问题是检索到的XML,因此反序列化的JSON对象具有不同的字段/属性/元素,具体取决于正确的函数。为每个可能的 XML 设置一个类将是一场噩梦。
有没有办法不必为每个反序列化创建一个特定的类(在本例中为 person)?
您可以将 JSON 字符串反序列化/解析为 Newtonsoft 的JObject
。然后你可以访问像 Dictionary(Of String, String)
这样的属性,例如:
Dim arg_strXml = "<Person><Name>foo</Name></Person>"
Dim doc = New XmlDocument()
doc.LoadXml(arg_strXml)
Dim jsonValue = JsonConvert.SerializeXmlNode(doc)
Dim jsonObject = JObject.Parse(jsonValue)
Console.WriteLine(jsonObject("Person")("Name"))
dotnetfiddle demo
输出:
foo