2014-02-09 1011 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; 
相關問題