Search code examples
c#jsondatatabledataset

JSON Conversion to DataSet


I have a JSON string with Multiple JSON Object. I would like to know how to deserialize Json string to DataSet.

I have deserialize JSON string to DataTable. It works fine but I would like to know how to convert multiple JSON object to dataset

Below is sample JSON:

{
"Name": "Jamal",
"Age": "42",
"City": "Mumbai",
"EducationalInfo": [{
    "Degree": "BE",
    "University": "Cristian Universiy"
}, {
    "Degree": "ME",
    "University": "Texas University"
}],
"LoanInfo": [{
    "LoanType": "Car Loan",
    "Amount": "1000000"
}, {
    "LoanType": "Personal",
    "Amount": "200000"
}]
}

Expected Output is:

Name, Age, City is one datatable

Degree & University is one datatable

LoanType & Amount is one datatable

Please suggest how to covert this.


Solution

  • you have to convert personal fields to Array, before deserializing to DataSet

         using Newtonsoft.Json;
    
        var jObj = JObject.Parse(json);
    
        var propsToRemove = jObj.Properties()
                                .Where(p => p.Value.Type != JTokenType.Array)
                                .ToArray();
    
        jObj["PersonalInfo"] = new JArray(new JObject(propsToRemove));
    
        for (var i = 0; i < propsToRemove.Count(); i++)
            propsToRemove[i].Remove();
            
        DataSet ds = jObj.ToObject<DataSet>();
    

    test

    var tableNames = string.Join(", ", ds.Tables.OfType<DataTable>()
                           .Select(dt =>dt.TableName ));
    

    test result

    EducationalInfo, LoanInfo, PersonalInfo