2016-04-28 35 views
0

我是JSON的新手,如果我無知,我很難理解。我有以下的JSON:如何獲取JSON對象的屬性,當他們在一個數組內?

"data": [ 
{ 
    "id": 373644788, 
    "description": "something ", 
    "start": "2016-04-28T02:23:01+02:00", 
    "end": "2016-04-28T02:23:12+02:00", 
    "updated": "2016-04-28T02:24:05+02:00", 
    "dur": 11000, 
    "user": "John Smith", 
    "project": "First Project", 

}, 
{ 
    "id": 373635064, 
    "description": "None", 
    "start": "2016-04-28T01:43:42+02:00", 
    "end": "2016-04-28T01:44:06+02:00", 
    "updated": "2016-04-28T01:44:21+02:00", 
    "dur": 24000, 
    "user": "Drake", 
    "project": "Second Project", 

}] 

每個JSON對象,這是數組內的是一個單獨的項目,我需要從每一個提取數據(ID, Name, Start, End),並把它們放到我的C# Class,他們應該爲每個項目單獨存儲,因爲它們稍後將被導出到與這些屬性具有相同列的數據庫中。 我創建了Class Definitions

​​

的問題是,我無法訪問我的JSON。如果裏面的屬性我嘗試Deserialize它,我總是得到0在我在我的所有屬性輸出,如果我能不能訪問這些屬性。

第二個問題是我該如何儲存它們?我的意思是,當它們被導出到數據庫時,它們中的每一個都應該自動放入不同的行中,每行都有(ID,Nama,Start,End)列。 謝謝。

Deserilize:

String jsonString = File.ReadAllText(@"D:\Json.json"); 
       Definitions def = JsonConvert.DeserializeObject<Definitions>(jsonString); 
       Console.WriteLine(def); 
+0

你可以告訴我們你的反序列碼嗎? –

+0

這是我的反序列化代碼。我把我的JSON放入本地文件。我得到4個屬性全部爲0值 – user3613744

回答

3

當你的JSON有一個名爲data屬性,並且此屬性是擁有許多對象數組。你需要的是從json的根進行反序列化,即:從數據屬性。

您已經使用與JSON中相同的屬性編寫了您的類,這是正確的,您現在想要的是爲data屬性編寫另一個類。

public class DefinitionRoot 
{ 
    public List<Definitions> data {get; set;} 
} 

現在我們有一個屬性的類名爲data,它擁有我們Definitions的名單。

現在我們可以反序列化如下。

var allDefinitions = JsonConvert.DeserializeObject<DefinitionsRoot>(yourJsonData);

此步驟後,你的allDefinitons.data將有你的項目的詳細信息列表。

希望這有幫助

+0

我現在這樣做,我沒有得到一個錯誤,但我只得到一個空白屏幕 – user3613744

+0

或者我得到這個:System.Collections.Generic.List'1 [test2.Program +定義]。 test2是我的命名空間 – user3613744

+0

你不能在控制檯中寫它...將一個調試器放在它們的上面,然後查看這些值,否則你也可以使用監視窗口...或者執行'Console.WriteLine(def [0] .id );''你會得到數組中第一個對象的ID –

相關問題