【发布时间】:2021-12-30 08:05:37
【问题描述】:
这就是我要找的。我需要从 rest api 获取数据并将其插入到我的 SQL 表中。 我已经在这里和谷歌上搜索了一个解决方案,但他们从来没有满足我的需求。我对编码很陌生,所以我很难理解所有步骤。
这是我目前所拥有的:
- 我尝试调用 api(有效)
- 在 DataTable 中填充数据(不工作)
- 将它们插入到 SQL 表中
这是我的代码:
protected void btnAPI_OnClick(object sender, EventArgs e)
{
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = (SecurityProtocolType) 3072;
using (WebClient client = new WebClient())
{
client.Credentials = new NetworkCredential(username,password);
string json = client.DownloadString("https://XXXX/XXXX001?view=expand");
JObject jArray = JObject.Parse(json);
var dt = JsonConvert.DeserializeAnonymousType(json, new { Content = default(DataTable)}).Content; //On this point the code gets an error and it stops
for (int i = 0; i < dt.Rows.Count; i++)
{
connection(); //This is my connection string. It works!
sqlConn.Open();
using (sqlConn)
{
string qry = "INSERT INTO myTable VALUES(@name, @age, @date)";
connection();
sqlConn.Open();
using (SqlCommand cmd = new SqlCommand(qry, sqlConn))
{
cmd.Parameters.AddWithValue("@name", dt.Rows[i]["name"].ToString());
cmd.Parameters.AddWithValue("@age", dt.Rows[i]["age"].ToString());
cmd.Parameters.AddWithValue("@date", dt.Rows[i]["date"].ToString());
cmd.ExecuteNonQuery();
}
sqlConn.Close();
}
}
}
这里是json:
{
"@count": 2,
"@start": 1,
"@totalcount": 2,
"Messages": [],
"ResourceName": "user",
"ReturnCode": 0,
"content": [
{"user": {
"name": "Eric",
"age": "25",
"date": "2021-10-23T11:18:10+00:00",
}},
{"user": {
"name": "Paul",
"age": "30",
"date": "2021-10-23T11:18:10+00:00",
}}]
}
这里的错误:
Newtonsoft.Json.JsonSerializationException: 'Unexpected JSON token when reading DataTable: StartObject. Path 'content[0].user', linke 9, position 20.'
我认为问题在于获取的 json 在内容下具有带有子属性的属性。但我不知道如何解决这个问题。
非常感谢您的帮助。
问候, 编辑
【问题讨论】:
-
您发布的json无效。能贴出真实的json吗?
-
} "@count": 2, "@start": 1, "@totalcount": 2, "Messages": [], "ResourceName": "user", "ReturnCode": 0 ,“内容”:[ {“用户”:{“名称”:埃里克,“年龄”:“25”,“日期”:“2021-10-23T11:18:10 + 00:00”,}},{ “用户”:{“姓名”:保罗,“年龄”:“30”,“日期”:“2021-10-23T11:18:10+00:00”,}},}
-
这是我在使用 api 时得到的
-
您的 JSON 以右大括号开头?那是无效的json。生成 json 的任何东西都做得非常糟糕。我看到以逗号结尾的部分,这也是无效的。询问创建此 json 的人使用有效的 JSON 生成器。我猜他们正在尝试手动操作(但失败了)。
-
很抱歉。只是复制错误。应该工作正常。由于隐私问题,我只需要修改内容。 json现在应该是好的。我更新了它