【发布时间】:2018-03-10 14:58:42
【问题描述】:
我的市场 API 服务停止了我用来将数据抓取到 C# 应用程序中的调用。此后,他们发布了“批量报价”功能,实际上可以在我的应用程序中节省大量工作。它以 JSON 格式返回数据。我正在使用 Newtonsoft 解析我的旧 API 调用,它返回一个非常可预测的输出。但是,现在批量报价 API 一次返回动态数量的股票,我无法完全破解语法。
JSON 输出:
{
"Meta Data": {
"1. Information": "Batch Stock Market Quotes",
"2. Notes": "IEX Real-Time Price provided for free by IEX (https://iextrading.com/developer/).",
"3. Time Zone": "US/Eastern"
},
"Stock Quotes": [
{
"1. symbol": "MSFT",
"2. price": "96.1800",
"3. volume": "20087326",
"4. timestamp": "2018-03-09 13:53:07"
},
{
"1. symbol": "AMD",
"2. price": "11.6800",
"3. volume": "63025764",
"4. timestamp": "2018-03-09 13:53:08"
},
{
"1. symbol": "NVDA",
"2. price": "243.9600",
"3. volume": "8649187",
"4. timestamp": "2018-03-09 13:52:51"
}
]
}
所以“股票行情”数组是我每次都需要抓取的,数组中元素的数量取决于用户的输入。
到目前为止我已经尝试过:
dynamic obj = JsonConvert.DeserializeObject(rawJSON);
这似乎创建了一些具有 2 个孩子的通用对象。我需要第二个孩子的所有孩子,“股票行情”。该对象包含一个 count 方法,该方法显示“Stock Quotes”有多少子元素。我只是不确定获取每个子元素需要使用的语法。目标是将每个子元素放入自定义类的对象字典中。
非常感谢任何帮助,谢谢!
注意:所有其他方法都失败了我可能会为包含“Stock Quotes”子项的方括号处理字符串,然后解析它们,等等。又快又脏,它可能会奏效——但一定有更优雅的方法,对吧?
【问题讨论】:
-
不要使用
dynamic,只要解析成JObject,就可以直接按名称访问属性,按索引访问数组
标签: c# json json.net json-deserialization