2013-12-19 59 views
0

我一直在閱讀了幾個小時,但還是無法弄清楚如何我有無法理解如何使用json.net

 WebClient wc = new WebClient(); 
     Uri uri = new Uri("url"); 
     string json = wc.DownloadString(uri); 
     var a = JsonConvert.DeserializeObject<RootObject>(json); 

和類使用此 我的按鈕下

public class Shares 
    { 
     public int valid { get; set; } 
     public int invalid { get; set; } 
     public int id { get; set; } 
     public int donate_percent { get; set; } 
     public int is_anonymous { get; set; } 
     public string username { get; set; } 
    } 

    public class Transactions 
    { 
     public double Credit { get; set; } 
     public double Debit_MP { get; set; } 
     public double Fee { get; set; } 
     public int TXFee { get; set; } 
    } 

    public class Data 
    { 
     public string username { get; set; } 
     public Shares shares { get; set; } 
     public int hashrate { get; set; } 
     public string sharerate { get; set; } 
     public Transactions transactions { get; set; } 
    } 

    public class Getuserstatus 
    { 
     public string version { get; set; } 
     public double runtime { get; set; } 
     public Data data { get; set; } 
    } 

    public class RootObject 
    { 
     public Getuserstatus getuserstatus { get; set; } 
    } 

我做了一個消息來檢查從URL和所有的數據字符串是存在的,但它並沒有把它放入字段時,我打電話給他們,他們都是空

 Shares Share = new Shares(); 
     textBox1.Text += "Username: " + Share.username; 

編輯: 好吧我得到它的工作a.getsuerstatus.data.shares.username是無效的api我不知道爲什麼jsontocsharp網站添加它,但所有的數據是有用戶名實際上是a.getuserstatus。 data.username感謝大家的幫助,否則我會仍然試圖調用使用股份的股票=新股份()

+0

你能從API發佈示例json嗎?如果類定義不正確地匹配json的模式,它將不起作用。我可以糾正他們,如果是這樣的話:) – evanmcdonnal

+0

你可以分享json字符串嗎? –

+0

{「getuserstatus」:{「version」:「1.0.0」,「runtime」:201.36690139771,「data」:{「username」:「snow」,「shares」:{「valid」:0,「invalid」 :0, 「donate_percent」:0, 「is_anonymous」:0}, 「hashrate」:0, 「sharerate」: 「0.0000」, 「交易」:{ 「信用」:5592.5516587, 「Debit_MP」:5456.48342204, 「費」 :27.96275827,「TXFee」:100}}}} –

回答

1

下面的代碼數據:

Shares Share = new Shares(); 
textBox1.Text += "Username: " + Share.username; 

創建的對象的新實例鍵入Shares其中username屬性已初始化爲空字符串。

與您想要解析的json格式的文本沒有關係。

您使用解析JSON字符串的方法:var a = JsonConvert.DeserializeObject<RootObject>(json);預計將產生類型的對象RootObject

你會想設置反序列化到atextbox1等於對應Shares對象的Text屬性。

textbox1.Text = a.getUserStatus.data.shares.username; 
+0

我試過這個textBox1.Text + =「用戶名:'」+ a.getuserstatus.data.shares.username +「'」;我在文本框中獲取用戶名:'' –

0

問題不在於反序列化,就是這樣;

Shares Share = new Shares(); 
    textBox1.Text += "Username: " + Share.username; 

這反而需要是

textBox1.Text += "Username: " + a.getUserStatus.data.username; 

a是由json.NET實例化的對象。您需要經過所有間接訪問username的值,而不是僅分配一個新的Share實例並訪問它的用戶名,這兩個參考指向完全不同的對象。

+0

我試過這個 textBox1.Text + =「用戶名:'」+ a.getuserstatus.data.shares.username +「'」; 我在文本框中輸入用戶名:''' –

+0

@MichaelPinkiePieMarshall我有一個理論,你確定你不想要'a.getUserStatus.data.username'? 'data'有一個'username'屬性,它在你發佈的json例子中設置。我沒有看到'share',我只是把它放在你的類定義上。我編輯了我的帖子,我認爲這會起作用。如果沒有,我會仔細檢查你的模型對JSON並確保它完全匹配。 – evanmcdonnal