C# 使用json.net将json对象反序列化为SQL DB

C# 使用json.net将json对象反序列化为SQL DB,c#,asp.net,json,json.net,C#,Asp.net,Json,Json.net,我想使用json.net将json对象反序列化为SQL DB Json文件: { "requirements": { "requirement": [ { "Id": "req1", "desc": "description of requirement1" }, { "Id": "req2", "desc": "description of requirement2",

我想使用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”属性的值应该放在需求表的Id列中,而“desc”属性的值应该放在需求表的desc列中

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

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

    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);
string json=“{\'requirements\”:{\'requirement\”:[{\'Id\”:“requirement1\”,{\'Id\”:“requirement2\”,“desc\”:“requirement2\”,},{\'desc\”:“requirement3\”的描述,{\'desc\”:“requirement3\”,“Id\:“requirement3\”});
//使用Json.Net反序列化
var objectRequirement=JsonConvert.DeserializeObject(json);
//将其添加到数据库中
foreach(objectRequirement.requirements.requirements中的var项)
{
db.Requirement.Add(新需求{ID=item.ID,DESC=item.DESC});
}
db.SaveChanges();

您可以使用创建您的类:

    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; }
    }
公共类要求
{
公共字符串Id{get;set;}
公共字符串desc{get;set;}
}
公开课要求
{
公共列表要求{get;set;}
}
公共类根对象
{
公共需求{get;set;}
}

下面是Foreach循环错误的错误28 Foreach语句无法对“TestWebService.Models.RootObject”类型的变量进行操作,因为“TestWebService.Models.RootObject”不包含“GetEnumerator”的公共定义C:\Users\ab\Documents\Visual Studio2013\Projects\TestWebService\TestWebService\Controllers\JsonReaderController.cs 82 17 TestWebServiceOk我只是将(objectRequirement中的var项)替换为(objectRequirement.requirements.requirements中的var项),我还更改了解决方案中的json字符串。您也可以在sql server中使用OPENJSON,以防您使用存储过程。你可以参考这个链接
        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();
    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; }
    }