需要从Json中的某个API检索数据(C#)

时间:2018-04-11 08:50:56

标签: c# json visual-studio

我需要将每个产品的名称从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;}}

1 个答案:

答案 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

Demo here