【发布时间】:2021-02-12 10:16:51
【问题描述】:
我正准备在 vb.net 应用程序(使用 httpclient)中实现 Ameritrade Rest API 的接口。
除其他事项外,我必须从股票代码列表中查询报价(例如 AMD、MSFT、AMZN、....)。
API 的调用没有问题,我得到了一个有效的 Json,但我希望 Json 没有以某种方式返回。
我现在正在寻找解决该问题的最佳方法...
这不是我实现的第一个 Rest API 接口。
通常,我在 vb.net 中实现相应的数据类,然后使用 JsonConvert(来自 Newtonsoft)将 Json 字符串反序列化到我的数据类中。
示例:
Dim oObject As New DataClass
oObject = JsonConvert.DeserializeObject(Of DataClass)(JsonString)
其中DataClass是根据Json字符串中的数据定义的vb.net类。
问题:
要查询的股票代码列表是动态的,并且可以从 api 调用更改为 api 调用。
如果我 - 例如- 在通话中查询 AMD 和 MSFT,我会返回(仅减少几个字段)以下 Json:
{
"AMD": {
"assetType": "EQUITY",
"symbol": "AMD",
"description": "Advanced Micro Devices, Inc. - Common Stock",
"bidPrice": 92.11
},
"MSFT": {
"assetType": "EQUITY",
"symbol": "MSFT",
"description": "Microsoft Corporation - Common Stock",
"bidPrice": 243.1
}
}
为了能够反序列化 Json,我必须实现以下 DataClass:
Public Class DataClass
Public Property AMD As AMD
Public Property MSFT As MSFT
End Class
Public Class AMD
Public Property assetType As String
Public Property symbol As String
Public Property description As String
Public Property bidPrice As Double
End Class
Public Class MSFT
Public Property assetType As String
Public Property symbol As String
Public Property description As String
Public Property bidPrice As Double
End Class
这可行,但绝对是静态的,没有任何意义,因为我必须为任何代码实现(相同的)类,我可能想在功能中查询。 p>
我希望得到一个动态列表,以便我可以按以下方式实现该类:
Public Class DataClass
Public Property TickerDetails As List(Of TickerDetail)
End Class
Public Class TickerDetail
Public Property assetType As String
Public Property symbol As String
Public Property description As String
Public Property bidPrice As Double
End Class
这样,我就可以在 TickerDetails 列表中反序列化并遍历列表(不管我查询了哪些符号)。
但是,我无法改变,我通过 API 得到的东西......
问题:
处理此问题的最佳方法是什么?
【问题讨论】:
-
custom converter 可能会满足您的需求。
标签: json vb.net json.net httpclient