【问题标题】:JSON API query to get data using C#使用 C# 获取数据的 JSON API 查询
【发布时间】:2017-12-03 10:38:08
【问题描述】:

我是编程初学者,最近学习并使用 http uri 获取数据,然后在 SSIS 中使用 C# 解析流中的 json 字符串,并能够将数据加载到 sql server 数据库中。

下面是我使用的示例代码..

System.Uri uri = new Uri("API URL");
WebRequest webRequest = HttpWebRequest.Create(uri);
HttpWebRequest httpWebRequest = (HttpWebRequest)webRequest;
NetworkCredential networkCredential = new NetworkCredential("LOGIN","Password");
credentialCache.Add(uri,"Basic",networkCredential);
WebResponse webResponse = webRequest.GetResponse();
...

但是我正在尝试为另一个使用 POST 方法的 api 设置相同类型的连接。

查询看起来像.. URL + JSON API 查询类似于..

{"JSON" : {
"name": "Dataset",
"ColumnSelect": ["Name","Age","Email"],
"sort":["Name"],
"filterList": [
{
"Attribute": "Age",
"Operator": ">",
"Value": ["25"]
}],"returnObject"

我不确定如何使用它来查询数据并将数据加载到 sql 中,就像 http 请求一样。有人可以告诉我正确的方向来实现这一目标。感谢您的所有帮助。

【问题讨论】:

    标签: c# json ssis


    【解决方案1】:

    我不确定您的方案是什么,但据我了解,您正在尝试从某个服务器获取数据,并将数据存储在您的数据库中。

    您已经使用 HTTP GET 实现了,但这次您需要使用 POST。

    GET 和 POST 的基本区别在于,GET 用于查询现有数据,但在 POST 中,您是在向服务器传递一些东西。 (当然还有更多区别,查看这个链接:https://www.w3schools.com/tags/ref_httpmethods.asp

    这很容易做到:

    1. Prepare your POST request,你的参数需要有内容。
    2. 从您发布的 JSON 中为传入的响应字符串创建类:

      public class JSON
      {
          public string name { get; set; }
      
          public string[] ColumnSelect { get; set; }
      
          public string[] sort { get; set; }
      
          public filterList filterList { get; set; }
      }
      
      public class filterList
      {
          public string Attribute { get; set; }
      
          public string Operator { get; set; }
      
          public string[] Value { get; set; }
      }
      
    3. 当您有响应字符串(字符串化 JSON)时,通过 JSON.NET 对其进行反序列化。

    4. 现在您将它们作为 .NET 对象。您可以使用 Entity Framework 将它们提交到数据库。

    如果您需要任何步骤的建议,我可以编辑我的答案。

    【讨论】:

    • 感谢您的回复.. 当您说“但在 POST 中,您正在向服务器交付一些东西”时。您的意思是我们必须通过 url 发送此查询并获得响应。抱歉在这里有点慢。是否有可能获得一个示例来理解逻辑并尝试按照我的要求进行构建。谢谢
    • 检查我提供的链接。通过“在 POST 中,您正在向服务器交付一些东西”,我的意思是,您需要随请求一起发送发布数据。检查datastream.Write(data, 0, data.Length); 行。如果以上答案对您有帮助,请标记为答案。
    猜你喜欢
    • 2017-09-13
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 2020-03-29
    • 2021-01-13
    • 1970-01-01
    相关资源
    最近更新 更多