从类型 'JObject' 转换为类型 'String' 无效



我在VB.net中遇到一个问题,远程系统以system.Collections.Generic.list的形式向我返回Json对象的列表

{
"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"转换为类型"字符串"无效。

在把我逼疯之后,我想明白了。远程服务返回的数据VB.net并不将其视为字符串,而是无法转换为字符串的JObject。因此,为了解决这个问题,我创建了一个结构,然后使用JObjectfrom-to-Object方法将Json对象转换为普通对象。

Dim tmpRow = JObject.FromObject(row).ToObject(Of CnameRecord)

更简单的方法是:

Dim jResults As JObject = JObject.Parse(value.ToString)

相关内容

最新更新