从“ JObject”类型到“ String”类型的转换无效

时间:2019-11-08 21:35:59

标签: vb.net

我在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”转换为类型   “字符串”无效。

1 个答案:

答案 0 :(得分:0)

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

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