【问题标题】:Convert JSon to dynamic object in VB.Net在 VB.Net 中将 JSON 转换为动态对象
【发布时间】:2018-04-21 06:01:21
【问题描述】:

我正在使用 VB.Net 并调用 salesforce API。它返回非常丑陋的JSON,我无法反序列化。我有以下代码使用JSON.Net

Dim objDescription As Object = JsonConvert.DeserializeObject(Of Object)(result)

objDescription 包含许多属性,其中一个 on=f 在fields 中。但是当我写像objDescription.fields 这样的东西时,它给了我错误。

  objDescription.fields   Public member 'fields' on type 'JObject' not found. Object

我不太确定,但我认为 C# 允许将任何 JSON 转换为动态对象。 VB.Net如何使用?

【问题讨论】:

  • objDescription 属于对象类型,而对象类型没有“字段”属性。也许您可以将其创建为目标类的强类型对象
  • @F0r3v3r-A-N00b 我真的很想这样做,但我认为有办法,因为这个 JSon 有很长的属性列表,数组等......
  • 然后不要将其转换为对象并将其保留为 JSON 对象并访问诸如 object.GetValue("name of property") 之类的属性并将其转换为您期望的任何数据类型跨度>

标签: asp.net vb.net json.net json-deserialization


【解决方案1】:

您可以转Option Strict Off 并使用JSON.NET 识别的ExpandoObject。为了利用动态特性,您可以使用对象类型的变量。

Option Strict Off

Sub Main    
    Dim jsonData As Object = JsonConvert.DeserializeObject(Of System.Dynamic.ExpandoObject)("{""Id"":25}")
    Dim test As Integer = jsonData.Id
    Console.WriteLine(test)
End Sub

如果您因为需要 JObject 的某些功能而想使用它,则可以改为索引 JObject。

Sub Main
    Dim jsonData As Object = JsonConvert.DeserializeObject(Of Object)("{""Id"":25}")
    Dim test = jsonData("Id")
    Console.WriteLine(test)
End Sub

【讨论】:

    猜你喜欢
    • 2019-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 2014-02-08
    • 2011-11-16
    • 1970-01-01
    • 2012-05-15
    相关资源
    最近更新 更多