无法将类型'Newtonsoft.Json.Linq.JToken'隐式转换为'string'。存在显式转换(您是否错过了演员?)

时间:2014-02-09 15:50:15

标签: c# .net json

我有以下代码:

WebClient c = new WebClient();
var data = c.DownloadString("https://btc-e.com/api/2/btc_usd/ticker");
//Console.WriteLine(data);
JObject o = JObject.Parse(data);
maskedTextBox11.Text = o["high"];

但它在标题中给出了错误。

2 个答案:

答案 0 :(得分:14)

您需要添加o["high"].ToString();而不是o["high"];,因为JObject[]会返回JToken并且您正在尝试分配maskedTextBox11.Text,这是{ {1}},用它。

如果您想要令牌所代表的对象的string,您可以按以下方式执行此操作:

ToString()

答案 1 :(得分:4)

high位于对象ticker中。

{
  "ticker": {
    "high": 730,
    "low": 671,
    "avg": 700.5,
    "vol": 9878677.9487,
    "vol_cur": 14084.99793,
    "last": 708.1,
    "buy": 708.1,
    "sell": 707.123,
    "updated": 1391962469,
    "server_time": 1391962470
  }
}

首先找到正确的对象,然后将其转换为字符串。

您的代码将是这样的:

maskedTextBox11.Text = (string)o["ticker"]["high"];

或者,您也可以使用dynamic

dynamic o = JObject.Parse(data);
maskedTextBox11.Text = o.ticker.high;