2017-05-24 51 views
-4

我是法國人,所以對不起,如果我的英語有時不確定... 我在6周的工作場所(我在這個領域相當新的.. .. 。),他們希望我將實際的數據庫(json)轉換爲SQL中的實際服務器,並全部使用C#。我需要用C#讀取JSON文件,將其轉換爲C#對象。閱讀JSON文件與C#並將其轉換成C#對象

還有就是JSON DB的例子:

{ 
    "updated": "2015-05-20T13:16:00.000Z", 
    "title": "Chaîne Activité", 
    "description": "Vidéos des activités diverses du Webcenter", 
    "items": [ 
    { 
     "id": "77B6573B-47E4-4D60-A6FC-99E81EF05404", 
     "uploaded": "2014-07-02T12:56:00.000Z", 
     "uploader": "Inconnu", 
     "category": "activité//Pléniére", 
     "title": "Teaser de la plénière 2014", 
     "description": "Marc Emmanuel de 'Tous Ensemble' et Axa Atout Coeur vous invite à la 3éme plénière.", 
     "thumbnail": "/Content/img/video/activite/teaser-pleniere-2014-.png", 
     "duration": 66, 
     "path": "Plénière-2014-teaser.mp4" 
    }` 

,並有我的課:

public class Item 
    { 
     public string Id { get; set; } 
     public string UploadDate { get; set; } 
     public string Uploader { get; set; } 
     public string Category { get; set; } 
     public string Title { get; set; } 
     public string Description { get; set; } 
     public string Thumbnail { get; set; } 
     public int Duration { get; set; } 
     public string Path { get; set; } 
    } 

請記住,我不是一個專業的,感謝你的幫助! :)

+1

那麼你有什麼累了嗎? –

+0

你想使用NewtonSoft Json nuget包來將JSON反序列化爲你的對象。然後使用他們使用的任何數據庫技術,無論是EF或ADO來獲得它到數據庫。 – Stuart

+0

我現在拿着Newtonsoft,我會用ADO的「老闆」看到 – MUGO

回答

1

你應該有你的類是這樣的:

public class Item 
{ 
    public string id { get; set; } 
    public string uploaded { get; set; } 
    public string uploader { get; set; } 
    public string category { get; set; } 
    public string title { get; set; } 
    public string description { get; set; } 
    public string thumbnail { get; set; } 
    public int duration { get; set; } 
    public string path { get; set; } 
} 

public class RootObject 
{ 
    public string updated { get; set; } 
    public string title { get; set; } 
    public string description { get; set; } 
    public List<Item> items { get; set; } 
} 

正如你看到的,屬性名相匹配的JSON對象的鍵。如果您希望爲json鍵具有不同的屬性名稱,則可以使用Json.NET並使用JsonProperty屬性將正確的鍵映射到正確的屬性。

E.g:

public class Item 
{ 
    [JsonProperty("id")] 
    public string Id { get; set; } 
    [JsonProperty("uploaded")] 
    public string Uploaded { get; set; } 
    [JsonProperty("uploader")] 
    public string Uploader { get; set; } 
    //Etc... 
} 

然後你的JSON字符串可序列化,以我們的RootObject類:

public RootObject DeserializeJson(string jsonString) 
{ 
    var myObj = JsonConvert.DeserializeObject<RootObject>(jsonString); 
    return myObj; 
} 
+0

感謝您的回覆。我在代碼中遇到的問題是VS說「var」只能用在腳本中,而jsonString不存在於此範圍內。如果我使用JsonProperty它意味着它替換以前的類? – MUGO

+0

'var'是一個隱式類型,應該在您嘗試反序列化json字符串的方法中使用。你也可以使用顯式類型'RootObject'。 'jsonString'只是我編寫的一個字符串變量名,你可以使用包含你的json字符串的變量。我編輯了我的答案,以包含我的意思的更清晰的例子。 – ThePerplexedOne

+0

完成,沒有更多的錯誤與「var」或「jsonString」我只是在錯誤的地方。我必須做任何鏈接來閱讀/轉換我的C#中的JSON文件? – MUGO