2017-08-03 235 views
0

我有一個產品數組的JSON,我想以列表形式加載到我的C#程序中,最終將其顯示在DataGridView中。從JSON數組填充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,所有我顯示的是一個空白格與標題名稱,網址,cash_price和類別。網格內沒有實際的條目。

我在做什麼錯?

感謝反序列化一樣JsonConvert.DeserializeObject<Product>當你

+0

請不要張貼鏈接到圖像,只是寫你得到一個空的網格。此外,請將此標記爲WinForms問題。 – dnickless

+0

@dnickless啊對不起,現在全部更新 –

+0

在設置DataSource之前,它看起來並不像是將'Product.products'屬性設置爲任何東西。 JsonConvert不會爲您設置該靜態屬性 –

回答

0

提供的產品類型。

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

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

你也許可以跳過當屬性名的JSON名稱完全匹配JsonPropertyAttribute秒 - 這在您的示例中的情況。

+0

感謝您的快速響應。然而,我嘗試這樣做(添加類等),但現在數據網格視圖是完全空白的。標題不再顯示,只是一個空白的灰色框。我知道我可能在某個地方犯了一個愚蠢的錯誤,但我一直在擺弄這個2小時,我不知道該怎麼做啊哈 –

+0

我忘了做'列表產品{得到;組; }公共。示例代碼更新,並且這次測試:) – Laoujin

+0

嗯我更新了我的代碼,但我仍然無法得到任何東西顯示,我不明白爲什麼,有什麼辦法我可以喜歡join.me你我的屏幕或東西? –