C# 如何将JSON结果添加到标签?

C# 如何将JSON结果添加到标签?,c#,json,winforms,C#,Json,Winforms,从C#Windows窗体应用程序上的JSON请求中检索答案时遇到问题。我的代码如下所示: 在FormLoad上: try { var url = "http://webpage.com/dir/sub/folder/app/app.json"; var json = new WebClient().DownloadString(url); Printer[] toners = JsonConvert.De

从C#Windows窗体应用程序上的JSON请求中检索答案时遇到问题。我的代码如下所示:

FormLoad
上:

try
        { 
            var url = "http://webpage.com/dir/sub/folder/app/app.json";
            var json = new WebClient().DownloadString(url);

            Printer[] toners = JsonConvert.DeserializeObject<Printer[]>(json);


            foreach (var j in toners)
            {
                lblOpt.Text = j.opt;
                lblStatus.Text = j.status;
                lblRemaining.Text = j.remaining;
                lblCnt.Text = j.cnt;
                lblCapa.Text = j.capa;
            }
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
但在加载表单时,我得到以下信息:

这是我从浏览器中的JSON中得到的答案:

toner_black: {
    opt: 1,
    status: 0,
    remaining: 23,
    cnt: 3488,
    capa: 5000,
    id: "CK670EXP",
    serial: "CRUM-15050630450"
}
这里有几个问题

1) 当浏览器返回单个对象时,您需要数组

Printer[] toners = JsonConvert.DeserializeObject<Printer[]>(json);
3) 您的
打印机
类应为
公共
-
公共类打印机{…}

最后一段代码如下所示:

var toner = JsonConvert.DeserializeObject<PrinterWrapper>(json).toner_black;
lblOpt.Text = toner.opt;
lblStatus.Text = toner.status;
lblRemaining.Text = toner.remaining;
lblCnt.Text = toner.cnt;
lblCapa.Text = toner.capa;
var toner=JsonConvert.DeserializeObject(json).toner\u黑色;
lblOpt.Text=toner.opt;
lblStatus.Text=toner.status;
lblRemaining.Text=toner.remaining;
lblCnt.Text=toner.cnt;
lblCapa.Text=toner.capa;

碳粉(黑色)
属性上打了一个很好的电话-我在回答中漏掉了那一点!
var toner = JsonConvert.DeserializeObject<Printer>(json);
public class PrinterWrapper {
  public Printer toner_black { get; set; }
}
var toner = JsonConvert.DeserializeObject<PrinterWrapper>(json).toner_black;
lblOpt.Text = toner.opt;
lblStatus.Text = toner.status;
lblRemaining.Text = toner.remaining;
lblCnt.Text = toner.cnt;
lblCapa.Text = toner.capa;