使用 C# 将 JSON 文本插入 SQL
Posted
技术标签:
【中文标题】使用 C# 将 JSON 文本插入 SQL【英文标题】:Insert JSON text into SQL using C# 【发布时间】:2016-07-03 20:36:00 【问题描述】:我有以下 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<DataSet>(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。 出于我的目的,也欢迎其他简单的选项。
【问题讨论】:
【参考方案1】:反序列化器不知道如何处理 DataSet 类型。
看这个答案:https://***.com/a/11982180/1235106
【讨论】:
以上是关于使用 C# 将 JSON 文本插入 SQL的主要内容,如果未能解决你的问题,请参考以下文章
使用 C# 和 OPENJSON 将 JSON 插入 SQL Server 2016