首页 > 编程语言 >C# 获取网络API接口中的数据(1)

C# 获取网络API接口中的数据(1)

时间:2023-08-14 20:13:07浏览次数:38  
标签:C# 接口 item Add API ToString using dataTable row

控制台案例:

using System;
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Data;
using System.Xml.Linq;
using System.Net;

namespace ConsoleApp
{

    class Program
    {
        static void Main(string[] args)
        {
            string apiUrl = "https://bff.gds.org.cn/gds/searching-api/ProductService/ProductListByGTIN?PageSize=30&PageIndex=1&SearchItem=06902952880294"; // 替换为实际的 API URL
            string jsonResponse = CallApi(apiUrl);

            if (!string.IsNullOrEmpty(jsonResponse))
            {
                DataTable dataTable = CreateDataTable();

                JObject jsonData = JObject.Parse(jsonResponse);
                JArray items = jsonData["Data"]["Items"] as JArray;

                foreach (JObject item in items)
                {
                    DataRow row = dataTable.NewRow();
                    row["keyword"] = item["keyword"].ToString();
                    row["branch_code"] = item["branch_code"].ToString();
                    row["brandid"] = item["brandid"].ToString();
                    row["brandcn"] = item["brandcn"].ToString();
                    row["code"] = item["code"].ToString();
                    row["valid_date"] = item["valid_date"].ToString();
                    row["logout_date"] = item["logout_date"]?.ToString(); // Handle null value
                    dataTable.Rows.Add(row);
                }

                // Now you have the data in the dataTable
                // You can use or process the dataTable as needed
                Console.ReadLine();

            }
        }
        //查看链接是否正常
        static string CallApi(string apiUrl)
        {
            using (WebClient client = new WebClient())
            {
                try
                {
                    return client.DownloadString(apiUrl);
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Error: {ex.Message}");
                    return null;
                }
            }
        }

        static DataTable CreateDataTable()
        {
            DataTable dataTable = new DataTable();
            dataTable.Columns.Add("keyword");
            dataTable.Columns.Add("branch_code");
            dataTable.Columns.Add("brandid");
            dataTable.Columns.Add("brandcn");
            dataTable.Columns.Add("code");
            dataTable.Columns.Add("valid_date");
            dataTable.Columns.Add("logout_date");
            return dataTable;
        }


        
    }


}

 

标签:C#,接口,item,Add,API,ToString,using,dataTable,row
From: https://www.cnblogs.com/Yytan-BK/p/17629608.html

相关文章

  • Go 语言切片(Slice)
    切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。定义varidentifier[]typevarslice1[]type=make([]type,len)slice1:=make([]type,len)make([]T,length,capacity)len()和cap()函数packagemainimport"fmt"funcmain(){varnumbers=......
  • NLP文本匹配任务Text Matching 有监督训练:PointWise(单塔)、DSSM(双塔)、Sentence BERT(双
    NLP文本匹配任务TextMatching[有监督训练]:PointWise(单塔)、DSSM(双塔)、SentenceBERT(双塔)项目实践0背景介绍以及相关概念本项目对3种常用的文本匹配的方法进行实现:PointWise(单塔)、DSSM(双塔)、SentenceBERT(双塔)。文本匹配(TextMatching)是NLP下的一个分支,通常用于计算两个句子......
  • FFmpeg3.2 msvc+msys 源码编译
    材料FFmpeg3.2源码x264x265fdk-aac注意:由于FFmpeg源码的版本太久,采用的第三方库是最新的,因此需要做调整基本操作编译64位FFmpeg程序Windows开始菜单->VisualStudio2022->x64NativeToolsCommandPromptforVS2019编译32位FFmpeg程序Windows开始菜单->VisualStudio2......
  • 2-04-Nacos配置管理-配置热更新-not practice
    所谓的热更新共有两种实现方式1.@Value+@Refresh针对单一类的配置热更新2.@ConfigurationProperties+@Autowired,针对所有类的配置热更新......
  • C2025暑假集训模板
    快速幂#include<bits/stdc++.h>usingnamespacestd;unsignedlonglonga,b,k,ans=1;intmain(){ cin>>a>>b>>k; if(b==0){ ans=1%k; cout<<ans<<endl; return0; }while(b!=0){ if(b&1) ans=ans*a%k; a=a*a%k; ......
  • 2-05-Nacos配置管理-多环境配置共享-not practice
    单环境配置文件-${spring.application.name}-${spring.profiles.active}.yaml多环境配置文件-${spring.application.name}.yaml配置优先级:${spring.application.name}-${spring.profiles.active}.yaml>-${spring.application.name}.yaml>本地.yaml怀疑-待测:远程的两个可能......
  • stm32cubemx 配置波特率
    1、参考链接:https://www.cnblogs.com/forever-youth/p/15807690.html 2、步骤:   1、先算出连接can总线的PCLK1时钟频率   2、再根据公式:can波特率=pclk1/((tbs1+tbs2+sync_seg)*brp)     其中PCLK1就是时钟频率,sync_seg一般默认固定为1   ......
  • 2023.08.12 codeforces round 892 div2
    年轻人的第三场div2(已完成:ABCDE)rank:1265solved:4ratingchange:+276newrating:1323A.UnitedWeStand题意:给定一个数列a,问是否能分成两个非空的数列b和c,使得c中任意一个数不是b中任意一个数的因子;若x是y的因子则有x<=y;因此不妨将数列的最大值放入c,把剩下的数放入b;注意数列中......
  • glDebugMessageCallback函数是什么?
    图形编程想要调试并不是一件容易的事,有的时候渲染出全黑的结果基本上只能凭经验来查错,特别是对于着色器,断点日志都是无效的,因此想办法掌握一些调试方法还是有必要的,不然找错误的源头可能真的会非常困难参考:https://blog.csdn.net/Jaihk662/article/details/108801019glDebugMess......
  • C/C++内存管理
    一、C/C++内存分布看下面这段代码:intglobalVar=1;staticintstaticGlobalVar=1;voidTest1(){ staticintstaticVar=1; intlocalVar=1; intnum1[10]={1,2,3,4}; charchar2[]="abcd"; constchar*pChar3="abcd"; int*ptr1=(int*......