1

I want to deserialize json object into SQL DB using Json.net

Json File :

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

Such that values for 'Id' attribute should be places in ID column of Requirement table and values for 'desc' attribute should be places in DESC column of Requirement table

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

2 Answers 2

2

You can generate your class using json2sharp tool and use deserialize object like this.

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

And use OrderByDescending

x.requirements.requirement.OrderByDescending(d => d.Id);
Sign up to request clarification or add additional context in comments.

Comments

1
        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();


U can use http://json2csharp.com/ to create your class:

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

2 Comments

I am getting below error for Foreach loop Error 28 foreach statement cannot operate on variables of type 'TestWebService.Models.RootObject' because 'TestWebService.Models.RootObject' does not contain a public definition for 'GetEnumerator' C:\Users\ab\Documents\Visual Studio 2013\Projects\TestWebService\TestWebService\Controllers\JsonReaderController.cs 82 17 TestWebService
Ok i just replace (var item in objectRequirement) with (var item in objectRequirement.requirements.requirement), i also change the json string in my solution.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.