无法从字典中获取值

时间:2019-10-06 16:03:17

标签: c# dictionary

我是C#的新手,对字典有一些疑问。我无法从中获得一些价值。

这是我通过api获取此字典的代码。

public string GetDataDaily()
{
    var param = new Dictionary<string, string>();
    param["symbol"] = "XBTUSD";
    param["binSize"] = "1d";

    param["count"] = "1";
    param["reverse"] = "true";

    return Query("GET", "/trade/bucketed", param);
}

这是我方法的调用

var PivotLine = bitmex.GetDataDaily();            

txtPriceLastDay.Text = PivotLine["Open"];

这是api请求的输出:

[{"timestamp":"2019-10 
  06T00:00:00.000Z","symbol":"XBTUSD","open":8188.5,"high":8207.5,"low":8035.5,"
  close":8170,"trades":41526,"volume":52477401,"vwap":8125.4571,"lastSize":2000, 
 "turnover":645864492821,"homeNotional":6458.644928209973,"foreignNotional":524 
     77401}]

我希望我能得到“ Price Price” 8188.5,但我无法运行我的代码。错误是无法将字符串转换为int。

2 个答案:

答案 0 :(得分:0)

GetDataDaily()返回一个字符串,但您想通过字符串的索引获取开盘价。

输出是JSON字符串。您必须将字符串解析为一个对象(例如JSON.net)。 之后,您可以使用点符号获取开盘价

答案 1 :(得分:0)

您需要从价格中删除最后一个字符(逗号),然后将其转换为小数。

example : 
decimal price = 0;
var isValid = decimal.TryParse(
      PivotLine["Open"].TrimEnd(',').Trim()                 // the source string, remove last comma, and trim whitespace if any.
    , System.Globalization.NumberStyles.AllowDecimalPoint   // to get the decimal point
    , new System.Globalization.CultureInfo("en-GB", true)   // CultureInfo
    , out price                                             // The parsed value if parsible. 
    );


if(isValid) 
{
    // if the conversion is Success
    txtPriceLastDay.Text = price.ToString(); // convert it to string again here. 
}
else    
{
    // IF conversion failed [Do Something]
    txtPriceLastDay.Text = "0.00";
}