【问题标题】:Deserialize json object into SQL DB using Json.net使用 Json.net 将 json 对象反序列化为 SQL DB
【发布时间】:2016-11-17 09:46:55
【问题描述】:

我想使用 Json.net 将 json 对象反序列化为 SQL DB

Json 文件:

{
  "requirements": {
    "requirement": [
      {
        "Id": "req1",
        "desc": "description of requirement1"
      },
      {
        "Id": "req2",
        "desc": "description of requirement2",
      },
      {
        "desc": "description of requirement3",
        "Id": "req3"
      }
    ]
  }
}

这样 'Id' 属性的值应该放在 Requirement 表的 ID 列中,而 'desc' 属性的值应该放在 Requirement 表的 DESC 列中

    ID        DESC
    req1      description of requirement1                       
    req2      description of requirement2                       
    req3      description of requirement3       

【问题讨论】:

标签: c# asp.net json json.net


【解决方案1】:

您可以使用json2sharp 工具生成您的类并像这样使用反序列化对象。

    public class Requirement
    {
        public string Id { get; set; }
        public string desc { get; set; }
    }

    public class Requirements
    {
        public List<Requirement> requirement { get; set; }
    }

    public class RootObject
    {
        public Requirements requirements { get; set; }
    }


 var x =JsonConvert.DeserializeObject<RootObject>(json);

并使用OrderByDescending

x.requirements.requirement.OrderByDescending(d => d.Id);

【讨论】:

    【解决方案2】:
            string json = "{\"requirements\": {\"requirement\": [{\"Id\": \"req1\",\"desc\": \"description of requirement1\"},{\"Id\": \"req2\",\"desc\":\"description of requirement2\",},{\"desc\": \"description of requirement3\",\"Id\": \"req3\"}]}}";
    
            //Deserialize using Json.Net
            var objectRequirement = JsonConvert.DeserializeObject<RootObject>(json);
    
            //Add it to your database
            foreach (var item in objectRequirement.requirements.requirement)
            {
                db.Requirement.Add(new Requirement { ID = item.Id, DESC = item.desc });
            }
            db.SaveChanges();
    


    您可以使用http://json2csharp.com/ 创建您的课程:
        public class Requirement
        {
            public string Id { get; set; }
            public string desc { get; set; }
        }
    
        public class Requirements
        {
            public List<Requirement> requirement { get; set; }
        }
    
        public class RootObject
        {
            public Requirements requirements { get; set; }
        }
    

    【讨论】:

    • Foreach 循环出现错误 错误 28 foreach 语句无法对“TestWebService.Models.RootObject”类型的变量进行操作,因为“TestWebService.Models.RootObject”不包含“GetEnumerator”的公共定义' C:\Users\ab\Documents\Visual Studio 2013\Projects\TestWebService\TestWebService\Controllers\JsonReaderController.cs 82 17 TestWebService
    • 好的,我只是将(var item in objectRequirement)替换为(var item in objectRequirement.requirements.requirement),我还在我的解决方案中更改了json字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    相关资源
    最近更新 更多