I have following JSON String and i want to insert the values in SQL database using C#.
{
"request": {
"Target": "Affiliate",
"Format": "jsonp",
"Service": "Offers",
"Version": "2",
"NetworkId": "dotcominfoway",
"Method": "findAll",
"api_key": "4bf7ba7b1904716179c9284cbd",
"callback": "angular.callbacks._2",
"_ga": "GA1.2.894200611.1458193988"
},
"response": {
"status": 1,
"httpStatus": 200,
"data": {
"2204": {
"Offer": {
"id": "2204",
"name": "App Of the Day Android IN Incent",
"description": "STEP 1 : You can place your own logo/creative in the offer wall as you like or you can place our creative.\r\n\r\nSTEP 2: If user clicks it will redirect to the play store to any application which he/she haven’t downloaded before in their device.\r\n\r\nSTEP 3 : User have to install the application and open it.",
"require_approval": "1",
"require_terms_and_conditions": 0,
"terms_and_conditions": null,
"preview_url": "http://appfly.mobi/red/02b4ef54-144b-11e5-a076-0cc47a44dbaa/?alg=2",
"currency": null,
"default_payout": "0.20000",
"status": "active",
"expiration_date": "2016-06-17 03:59:59",
"payout_type": "cpa_flat",
"percent_payout": "100.00",
"featured": null,
"conversion_cap": "0",
"monthly_conversion_cap": "0",
"payout_cap": "0.00",
"monthly_payout_cap": "0.00",
"allow_website_links": "0",
"allow_direct_links": "0",
"show_custom_variables": "0",
"show_mail_list": "0",
"dne_list_id": "0",
"email_instructions": "0",
"email_instructions_from": "",
"email_instructions_subject": "",
"has_goals_enabled": "0",
"default_goal_name": "",
"use_target_rules": "0",
"is_expired": "0",
"dne_download_url": null,
"dne_unsubscribe_url": null,
"dne_third_party_list": false
}
},
"3669": {
"Offer": {
"id": "3669",
"name": "Cash On IN Incent CPR",
"description": "Automatic OTP",
"require_approval": "1",
"require_terms_and_conditions": 0,
"terms_and_conditions": null,
"preview_url": "https://play.google.com/store/apps/details?id=com.softn",
"currency": "INR",
"default_payout": "12.00000",
"status": "active",
"expiration_date": "2016-09-29 03:59:59",
"payout_type": "cpa_flat",
"percent_payout": null,
"featured": null,
"conversion_cap": "1000",
"monthly_conversion_cap": "0",
"payout_cap": "0.00",
"monthly_payout_cap": "0.00",
"allow_website_links": "0",
"allow_direct_links": "0",
"show_custom_variables": "0",
"show_mail_list": "0",
"dne_list_id": "0",
"email_instructions": "0",
"email_instructions_from": "",
"email_instructions_subject": "",
"has_goals_enabled": "0",
"default_goal_name": "",
"use_target_rules": "0",
"is_expired": "0",
"dne_download_url": null,
"dne_unsubscribe_url": null,
"dne_third_party_list": false
}
}
....... and so on
I have written following code to insert into Dataset but it is giving error.
string url = "http:api.offers.com/Apiv3/json?NetworkId=inf&Target=Affiliate_Offer&Method=findAll&api_key=4bf7ba7b1904716179c9284cbd7db17018b8a5f";
string JsonString = new WebClient().DownloadString(url);
DataSet dataSet = JsonConvert.DeserializeObject<DataSet>(JsonString);
DataTable dataTable = dataSet.Tables["request"];
Console.WriteLine(dataTable.Rows.Count);
foreach (DataRow row in dataTable.Rows)
{
Console.WriteLine(row["Target"] + " - " + row["Format"]);
}
Error Getting:
information: Unexpected JSON token when reading DataTable. Expected StartArray, got StartObject. Path 'request', line 1, position 12.
So, please help me to convert the Json into Dataset and then insert into SQL database or direct to SQL database. I'm currently using newtonsoft.json. Other easy options are also welcome for my purpose.
The deserializer does not know what to do with the type DataSet.
Look at this answer: https://stackoverflow.com/a/11982180/1235106