我有一个包含产品数组的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中,我显示的所有内容都是一个空白网格,其中包含标题名称,网址,现金价格和类别。网格内没有实际条目。
我做错了什么?
谢谢
答案 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
- 就像您的示例中的情况一样。