我在VB.net中遇到了一个问题,其中远程系统以System.Collections.Generic.List的形式向我返回了Json对象列表。我可以遍历该列表并获取每一行,这是一个看起来像这样的JsonObject
{
"Demo": {
"_id": "8ebf5297-64bb-4c92-9883-0b528e3af26c",
"_type": "cname",
"status": "pending",
"batch": 0,
"action": null,
"number": "2135551212",
"cname_text": "DEMO CENAME",
"history": {
"created_on": "2019-11-08T12:41:56.1182915-08:00",
"created_by": "DEMO",
"batch_date": "0001-01-01T00:00:00"
}
}
}
那么我该如何将其转换为常规对象,以便轻松访问这些值? 我尝试过
Dim myData = JObject.Parse(row)
和
Dim myData = JsonConvert.DeserializeObject(Of Dictionary(Of String, Object))(row)
均会创建错误
发生类型为'System.InvalidCastException'的未处理异常 在Microsoft.VisualBasic.dll中从类型“ JObject”转换为类型 “字符串”无效。
答案 0 :(得分:0)
让我疯了之后,我想通了。远程服务返回的数据VB.net不会将其视为字符串,而会将JObject转换为字符串。因此,为了解决这个问题,我创建了一个结构,然后使用JObject from to Object方法将我的Json对象转换为普通对象。
Dim tmpRow = JObject.FromObject(row).ToObject(Of CnameRecord)