使用C#将JSON文本插入SQL

我有以下JSON字符串,我想使用C#在SQL数据库中插入值。

{ "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 } } 

……. 等等

我已经编写了以下代码插入数据集,但它给出了错误。

  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(JsonString); DataTable dataTable = dataSet.Tables["request"]; Console.WriteLine(dataTable.Rows.Count); foreach (DataRow row in dataTable.Rows) { Console.WriteLine(row["Target"] + " - " + row["Format"]); } 

错误获取:

信息:读取DataTable时出现意外的JSON令牌。 预期的StartArray,得到了StartObject。 路径’请求’,第1行,第12位。

那么,请帮我将Json转换为Dataset然后插入SQL数据库或直接转到SQL数据库。 我目前正在使用newtonsoft.json。 其他简单的选择也欢迎我的目的。

反序列化器不知道如何处理类型DataSet。

看看这个答案: https : //stackoverflow.com/a/11982180/1235106