无法理解如何使用json.net

时间:2013-12-19 18:03:09

标签: c#

我已经阅读了好几个小时,仍然无法弄清楚如何使用它 在我的按钮下我有

        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谢谢大家为了帮助或我仍然试图使用Shares Share = new Shares()

来调用数据

2 个答案:

答案 0 :(得分:1)

以下代码:

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

创建一个Shares类型对象的新实例,该对象的username属性初始化为空字符串。

与您要解析的json格式的文本没有关联。

用于解析json字符串的方法:var a = JsonConvert.DeserializeObject<RootObject>(json);期望生成类型为RootObject的对象

您需要将textbox1的Text属性设置为等于已反序列化为Shares的相应a对象。

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

答案 1 :(得分:0)

问题不在于反序列化,就是这样;

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

反而需要

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

a是json.NET实例化的对象。您需要遍历所有间接访问以访问username的值,而不仅仅是分配了一个新的Share实例并访问它的用户名,这两个引用指向完全不同的对象。