我需要将每个产品的名称从API检索到C#(Visual Studio)中的列表框,并且我已成功登录API。我能够检索序列化的每个产品的数据,但是当我尝试反序列化时,每个产品的结果都是这样的:' app1.Form1 + Data'。如何正确检索每个产品的名称?
代码:
public class Data
{
public int id { get; set; }
public string name { get; set; }
}
private void Form1_Load(object sender, EventArgs e)
{
for (int i = 1; i <= 20; i++)
{
string url = reqlbl.Text;
WebClient c = new WebClient();
String userName = "user";
String passWord = "pass";
string credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes(userName + ":" + passWord));
c.Headers[HttpRequestHeader.Authorization] = "Basic " + credentials;
var json = c.DownloadString(url + i.ToString());
Data result = JsonConvert.DeserializeObject<Data>(json);
listBox1.Items.Add(result);
}
}
注意:变量&#39; i&#39;代表一种产品。共有20个产品。
以下是产品1的API示例:
{&#34; 1&#34; {&#34; ID&#34;:1,&#34;名称&#34;:&#34;产品1&#34;}}
答案 0 :(得分:4)
json基本上是一个字典,即假设它可以返回超过1个产品或类似的东西,或者它只是懒得建的api,谁知道
<强>〔实施例强>
var str = "{\"1\":{\"id\":1,\"name\":\"Product1\"}}";
var dataDict = JsonConvert.DeserializeObject<Dictionary<string, Data>>(str);
foreach (var data in dataDict.Values)
Console.WriteLine(data.id + ", " + data.name);
<强>输出强>
1, Product1