2014-02-09 1035 views
1

我有以下代码:不能将类型'Newtonsoft.Json.Linq.JToken'隐式转换为'string'。一个显式转换存在(是否缺少强制转换?)

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

但它给错误的称号。

+0

会更好,如果我们看到你的代码.. –

+0

错误消息不要”的部分是什么你明白吗? – SLaks

+0

我的坏大声笑添加了代码 – Katazui

回答

9

只是需要你增添o["high"].ToString();而不是o["high"];因为JObject[]返回JToken和你想分配maskedTextBox11.Text,这是一个string,用它。

如果你想令牌表示对象的ToString()你可以做到这一点,如下所示:

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

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; 
相关问题