用C#读取json文件并将其转换为C#对象

时间:2017-05-24 09:58:25

标签: c# json serialization

我是法国人,对不起,如果我的英语有时不确定...... 我在工作场所工作了6周(我在这个领域很新......)他们希望我将实际的DB(json)转移到SQL中的真实服务器,并且全部使用C#。我需要用C#读取JSON文件,将其转换为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 :(得分: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.NET并使用JsonProperty属性将正确的键映射到正确的属性,如果您希望为json键设置不同的属性名称。

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;
}