-2
我正在使用Newtonsoft JSON來解析API的某些輸出。但是,API結果接近2.5 MB,爲了查找我需要的數據而解析出整個文件需要很長時間。下面是API輸出的一個片段:JSON解析需要太長時間
{
"response": {
"success": 1,
"current_time": 1416085203,
"raw_usd_value": 0.2,
"usd_currency": "metal",
"usd_currency_index": 5002,
"items": {
"A Brush with Death": {
"defindex": [
30186
],
"prices": {
"6": {
"Tradable": {
"Craftable": [
{
"currency": "metal",
"value": 3,
"last_update": 1414184620,
"difference": -0.165
}
]
}
}
}
},
我的代碼應該發現,是項目的孩子與defindex數組中的數字「5021」對象的唯一對象,並拉出貨幣價值數據。這裏是我用來查找數據的代碼:
dynamic result = Newtonsoft.Json.JsonConvert.DeserializeObject(priceFile);
int keyprice = 0;
foreach(var items in result.response.items){
foreach(var item in items){
string indexstr = item.defindex.ToString();
if (indexstr.Contains(defindex))
{
foreach(var price in item.prices){
foreach (var quality in price)
{
Console.WriteLine("{0} {1}", quality.Tradable.Craftable[0].value, quality.Tradable.Craftable[0].currency);
keyprice = quality.Tradable.Craftable[0].value;
return keyprice;
}
}
}
}
}
理想情況下,代碼最多隻需要10秒即可運行。
現在需要多長時間? (所有break語句中的重點是什麼?如果你只想要第一個元素,只需要第一個元素...) –
'indexstr = item.defindex.ToString();如果(indexstr.Contains(「5021」))..'是如此...比較整數有趣的方式。至少它不會區分55021和5021. –
現在,它需要幾分鐘(超過10分鐘)才能完成。另外,奇怪比較的目的是因爲item.defindex不是int。不過,我相信它是唯一包含這個數字串的defindex。 – gameboyprinter