从JSON数组填充DataGridView

时间:2017-08-03 22:44:19

标签: c# arrays json winforms datagridview

我有一个包含产品数组的JSON,我希望将其作为列表加载到我的C#程序中,最后将其显示在DataGridView中。

JSON:

{
   "products":[
      {
         "name":"game",
         "url":"website 1",
         "cash_price":"£20.00",
         "category":"Playstation 4 Game"
      },
      {
         "name":"tv",
         "url":"website 2",
         "cash_price":"£200.00",
         "category":"electronics"
      }
   ]
}

产品类

class Product
    {

        [JsonProperty("name")]
        public string name { get; set; }

        [JsonProperty("url")]
        public string url { get; set; }

        [JsonProperty("cash_price")]
        public string cash_price { get; set; }

        [JsonProperty("category")]
        public string category { get; set; }

        [JsonProperty("url")]
        public string url { get; set; }

        public static IList<Product> products = new List<Product>();
    }

我运行此代码:

string input = File.ReadAllText(openFileDialog1.FileName);

var results = JsonConvert.DeserializeObject(input);
dataGridView1.DataSource = Product.products;

但是在DataGridView中,我显示的所有内容都是一个空白网格,其中包含标题名称,网址,现金价格和类别。网格内没有实际条目。

我做错了什么?

谢谢

1 个答案:

答案 0 :(得分:0)

在反序列化JsonConvert.DeserializeObject<Product>时提供产品类型。

class ProductList
{
     public List<Product> products  { get; set; }
}

var result = JsonConvert.DeserializeObject<ProductList>(input);
dataGridView1.DataSource = result.products;

当属性名称与JSON名称完全匹配时,您可以跳过JsonPropertyAttribute - 就像您的示例中的情况一样。