C# 如何将JSON结果添加到标签?
从C#Windows窗体应用程序上的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
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;