2017-05-24 52 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