所以我目前正在Visual Studio中使用JSON.NET解析我的JSON,因为使用反序列化对于我尝试执行的操作来说太慢了。我正在从TD Ameritrade获取股票信息,可以同时请求多个股票。下面的JSON结果仅来自提取1。如您所见,第一行是“ TQQQ”。如果我要抽出多只股票,那么我将在代表不同对象的单独区块中使用“ TQQQ”和“ CEI”。
在正常的反序列化下,我可以说要对字典进行反序列化,然后将其与我为之编写的任何类相应地放入字典中。但是,由于我需要逐行解析,因此有一种干净的方法可以判断何时到达下一个对象吗?
我可以说要跟踪最后一个字段,然后将下一行(下一个行情自动收录器的名称)添加到字典中,但这似乎有点不客气。
除了最初启动创建新的JSONReader之外,我认为不需要任何VB代码。
{
"TQQQ": {
"assetType": "ETF",
"symbol": "TQQQ",
"description": "ProShares UltraPro QQQ",
"bidPrice": 54.59,
"bidSize": 200,
"bidId": "Q",
"askPrice": 54.6,
"askSize": 8000,
"askId": "Q",
"lastPrice": 54.6,
"lastSize": 100,
"lastId": "P",
"openPrice": 51.09,
"highPrice": 54.6,
"lowPrice": 50.43,
"bidTick": " ",
"closePrice": 48.92,
"netChange": 5.68,
"totalVolume": 14996599,
"quoteTimeInLong": 1540493136946,
"tradeTimeInLong": 1540493136946,
"mark": 54.6,
"exchange": "q",
"exchangeName": "NASDAQ",
"marginable": true,
"shortable": true,
"volatility": 0.02960943,
"digits": 4,
"52WkHigh": 73.355,
"52WkLow": 38.6568,
"nAV": 0,
"peRatio": 0,
"divAmount": 0,
"divYield": 0,
"divDate": "2016-12-21 00:00:00.0",
"securityStatus": "Normal",
"regularMarketLastPrice": 54.6,
"regularMarketLastSize": 1,
"regularMarketNetChange": 5.68,
"regularMarketTradeTimeInLong": 1540493136946,
"delayed": true
}
}
答案 0 :(得分:0)
是否有一种清晰的方法可以分辨何时到达下一个物体?
是的,假设您使用的是JsonTextReader
,则可以查看TokenType
属性并检查它是否为StartObject
。这对应于JSON中的右括号{
。还有一种EndObject
令牌类型对应于右括号}
,这取决于代码的编写方式也很有用。
典型的用法模式如下:
If reader.TokenType == TokenType.StartObject Then
While reader.Read() AndAlso reader.TokenType <> JsonToken.EndObject
' process properties of the JSON object
End While
End If