我是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。
答案 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";
}