不能将类型 'Newtonsoft.Json.Linq.JToken' 隐式转换为"字符串"。存在显式转换(您是否缺少强制转换?



我有以下代码:

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"];

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

您只需要添加o["high"].ToString();而不是o["high"];,因为JObject[]返回一个JToken并且您正在尝试为maskedTextBox11.Text分配,这是一个string,与它。

如果需要令牌表示的对象ToString(),可以按如下方式执行此操作:

MyType obj = o["high"].ToObject<MyType>();
string s = obj.ToString();

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;

相关内容

最新更新