如何从REST API导入数据到SQL Server?

时间:2019-04-03 10:15:41

标签: c# json sql-server

我有一个REST API,它返回以JSON格式格式化的响应:

{
    "Employees" : [
        {
            "userId":"romin",
            "jobTitleName":"Developer",
            "emailAddress":"romin.k.irani@gmail.com"
        },
        {
            "userId":"nirani",
            "jobTitleName":"Developer",
            "emailAddress":"neilrirani@gmail.com"
        },
        {
            "userId":"tomhan",
            "jobTitleName":"Program Directory",
            "emailAddress":"tomhanks@gmail.com"
        }
    ]
}

是否有任何内置函数可以根据上述JSON在SQL Server数据库中创建表“ Employees”?

+--------+-------------------+-------------------------+
| UserId |   jobTitleName    |      emailAddress       |
+--------+-------------------+-------------------------+
| romin  | Developer         | romin.k.irani@gmail.com |
| nirani | Developer         | neilrirani@gmail.com    |
| tomhan | Program Directory | tomhanks@gmail.com      |
+--------+-------------------+-------------------------+

3 个答案:

答案 0 :(得分:1)

首先根据您的JSON创建C#类

using System;
using System.Collections.Generic;

using System.Globalization;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;

public partial class Welcome
{
    [JsonProperty("Employees")]
    public Employee[] Employees { get; set; }
}

public partial class Employee
{
    [JsonProperty("userId")]
    public string UserId { get; set; }

    [JsonProperty("jobTitleName")]
    public string JobTitleName { get; set; }

    [JsonProperty("emailAddress")]
    public string EmailAddress { get; set; }
}



 var JSONObj= JsonConvert.DeserializeObject<Welcome>(json); //convert you json in to class object

   var EmpArray=JSONObj["Employees"]; // will give you employee array

//现在您可以在那儿进行迭代以插入数据

答案 1 :(得分:1)

您可以使用OPENJSON表值函数将JSON数据解析为行和列。

DECLARE @json VARCHAR(max) ='
{
    "Employees" : [
        {
            "userId":"romin",
            "jobTitleName":"Developer",
            "emailAddress":"romin.k.irani@gmail.com"
        },
        {
            "userId":"nirani",
            "jobTitleName":"Developer",
            "emailAddress":"neilrirani@gmail.com"
        },
        {
            "userId":"tomhan",
            "jobTitleName":"Program Directory",
            "emailAddress":"tomhanks@gmail.com"
        }
    ]
}
'

SELECT userId,
    jobTitleName,
    emailAddress
FROM OPENJSON(@Json, '$.Employees')
WITH (
    userId VARCHAR(100),
    jobTitleName VARCHAR(100),
    emailAddress VARCHAR(100)
);

答案 2 :(得分:0)

响应格式是否为JSON自描述格式?如果您对超媒体很感兴趣,那么您可能想编写自己的客户端缓存。